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

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

我本来硬编码的价值与iPhone一起工作,但现在我将应用程序转换为通用二进制文件,硬编码数字在iPad上的分组表视图。

有没有一个合适的方法来获得单元格的宽度? 该框架返回全屏幕的宽度,这是扔我的标签不合适的地方。 或者,我应该硬编码两套值,一套用于iPhone,一套用于iPad?

任何build议将不胜感激。

你应该能够从单元格的contentView子视图中获得适当的尺寸。 但是你通常应该在你的子视图上设置大小和自动调整掩码,以便不pipe特定的宽度是什么,单元格都能正确显示。

这似乎没有为我工作; 我有一个自定义单元格定义在xib与左侧边缘的graphics(iPhone上20px),在iPhone上看起来很好。 但在iPad上,graphics与左侧分组部分边框重叠! 为了解决这个问题,我在水平空间约束(引导)的图像设置sockets,然后在UITableViewCell子类的代码中调整:

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

摆弄这个数字,直到差距恰到好处。 🙂

我意识到setFrame:可能不是这个代码的理想地方,但它工作 – 所以它保持。