在InterfaceOrientation上的customCell中重新定位UIButtons

时间:2013-03-27 15:57:35

标签: ios objective-c uitableview uiinterfaceorientation

我使用自定义tableviewcell,有3个按钮。

我在自定义单元格中的layoutSubviews方法中设置了按钮的框架:

-(void)layoutSubviews
{
    [super layoutSubviews];
    CGRect frame;
    if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
    {
        frame = CGRectMake(310, 7, 55, 35);
        _prod.frame = frame;
        
        frame = CGRectMake(365, 7, 55, 35);
        _leva.frame = frame;
        
        frame = CGRectMake(220, 4, 65, 65);
        _imageButton.frame = frame;
    }
    else{
        frame = CGRectMake(150, 7, 55, 35);
        _prod.frame = frame;
        
        frame = CGRectMake(205, 7, 55, 35);
        _leva.frame = frame;
       
        frame = CGRectMake(120, 4, 65, 65);
        _imageButton.frame = frame;
    }
}

问题是,当用户滚动表格视图时,在更改方向后,例如,所有按钮都会回显到旧的纵向位置。 以下是我如何初始化细胞:

LojaCell *cell = (LojaCell *) [tableView dequeueReusableCellWithIdentifier: @"LojaCell"];
if(cell == nil) cell = [[LojaCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"LojaCell"];

1 个答案:

答案 0 :(得分:0)

您可能必须向cellForRowAtIndexPath添加相同的方向敏感代码:以便在tableview重新加载或重新创建单元格时将它们加载到正确的位置。因为您正在使用dequeueReusableCells,它会删除屏幕外单元格以提高性能,这可能会解释滚动时的行为。