4

我使用一个自定义的 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"];
4

1 回答 1

0

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

于 2013-03-27T16:04:22.717 回答