确定分组自定义单元格的 UITableViewCell 宽度的正确方法?
Posted
技术标签:
【中文标题】确定分组自定义单元格的 UITableViewCell 宽度的正确方法?【英文标题】:Proper way to determine UITableViewCell width for grouped custom cells? 【发布时间】:2011-07-10 19:48:30 【问题描述】:我有一个通过代码(不是 Interface Builder)创建的自定义 UITableViewCell。我有依赖单元格宽度的子视图:有一个标签总是需要在单元格的右边缘内。单元格显示在分组的表格视图中。
我最初对这些值进行了硬编码以用于 iPhone,但现在我将应用程序转换为通用二进制文件,并且硬编码的数字已用于 iPad 上的分组表视图。
是否有正确的方法来获取单元格的宽度?框架返回全屏宽度,这使我的标签不合适。还是我应该硬编码两组值,一组用于 iPhone,一组用于 iPad?
任何建议将不胜感激。
【问题讨论】:
【参考方案1】:这些似乎都不适合我;我在 xib 中定义了一个自定义单元格,左侧边缘有一个图形(iPhone 上为 20px),在 iPhone 上看起来不错。但在 iPad 上,图形与左侧分组部分边框重叠!为了修复它,我在图像的水平空间约束(前导)上设置了一个出口,然后在 UITableViewCell 子类的代码中对其进行了调整:
- (void)setFrame:(CGRect)frame
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
self.leadingSpaceConstraint.constant = 40;
[super setFrame:frame];
然后摆弄数字直到差距刚刚好。 :)
我意识到 setFrame: 可能不是这段代码的理想位置,但它有效 - 所以它留下了。
【讨论】:
【参考方案2】:您应该能够从单元格的contentView
子视图中获取适当的尺寸。但是你通常应该在你的子视图上设置尺寸和自动调整大小的掩码,这样无论最终的具体宽度是多少,单元格都会正确显示。
【讨论】:
谢谢,这是我的问题。我使用 cell.frame 而不是 cell.contentView.frame 进行计算。以上是关于确定分组自定义单元格的 UITableViewCell 宽度的正确方法?的主要内容,如果未能解决你的问题,请参考以下文章
带有自定义 UITextView 单元格的 TableView 将导航栏滚动到屏幕外
iOS 6 自定义分组 UITableViewCell 大小不正确