正确的方法来确定分组自定义单元格的UITableViewCell宽度?

时间:2011-03-08 03:35:38

标签: iphone ipad ios uitableview width

我有一个通过代码创建的自定义UITableViewCell(不是Interface Builder)。我有依赖于单元格宽度的子视图:有一个标签总是需要在单元格的右边缘内。单元格显示在分组表视图中。

我最初对这些值进行了硬编码以便与iPhone配合使用,但现在我将应用转换为通用二进制文件,并且硬编码的数字用于iPad上的分组表视图。

是否有正确的方法来获得细胞的宽度?框架返回整个屏幕宽度,这使我的标签不合适。或者我应该硬编码两组值,一组用于iPhone,另一组用于iPad?

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:9)

您应该能够从单元格的contentView子视图中获取相应的尺寸。但是,您通常只需在子视图上设置大小和自动调整遮罩,这样无论特定宽度到底是什么,单元格都会正确显示。

答案 1 :(得分:0)

这些似乎对我没有用;我有一个在xib中定义的自定义单元格,左边有一个图形(iPhone上为20px),在iPhone上显得很好。但在iPad上,图形与左侧分组边界重叠!为了解决这个问题,我在水平空间约束(前导)上设置了一个出口到图像,然后在UITableViewCell子类的代码中调整它:

- (void)setFrame:(CGRect)frame {
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        self.leadingSpaceConstraint.constant = 40;
    }
    [super setFrame:frame];
}

然后摆弄这个数字,直到差距恰到好处。 :)

我意识到setFrame:可能不是这个代码的理想位置,但它有效 - 所以它保持不变。