2011-03-08 104 views
4

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

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

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

任何建议将不胜感激。

回答

9

您应该能够从单元的contentView子视图中获得适当的尺寸。但是,通常应该在子视图上设置大小和自动识别遮罩,以便不管特定宽度的最终结果如何,单元格都能正确显示。

+1

谢谢,那是我的问题。我为我的计算使用了cell.frame而不是cell.contentView.frame。 – SeanR 2011-03-08 12:08:02

0

这一切似乎都不适合我;我在xib中定义了一个自定义单元格,左侧边缘有一个图形(在iPhone上为20px),在iPhone上看起来很好。但在iPad上,图形与左侧分组的区域边界重叠!要解决它,我设定的水平空间约束(领导)到图像的输出,那么扭捏,在对的UITableViewCell子类代码:

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

拨弄数,直到差距是恰到好处。 :)

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

相关问题