我有一个通过代码创建的自定义UITableViewCell(不是Interface Builder)。我有依赖于单元格宽度的子视图:有一个标签总是需要在单元格的右边缘内。单元格显示在分组表视图中。
我最初对这些值进行了硬编码以便与iPhone配合使用,但现在我将应用转换为通用二进制文件,并且硬编码的数字用于iPad上的分组表视图。
是否有正确的方法来获得细胞的宽度?框架返回整个屏幕宽度,这使我的标签不合适。或者我应该硬编码两组值,一组用于iPhone,另一组用于iPad?
任何建议都将不胜感激。
答案 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:可能不是这个代码的理想位置,但它有效 - 所以它保持不变。