【发布时间】:2016-07-14 13:25:15
【问题描述】:
我在 IB 中的原型单元格中创建了一个 UIView 并添加了约束。该单元格有一个自定义类。当我尝试在 cellForRowAtIndexPath 中获取 UIView 的宽度时,它返回 476 而不是 251。在阅读了有关此主题的 SO 以及许多答案后,我尝试在 cellForRowAtIndexPath 或子类中调用 setNeedsLayout 和 layoutSubviews() 但均不返回正确的值。高度 20 是正确的。非常感谢任何帮助!
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("EventCell") as! CustomResultsTVCell
// cell.setNeedsLayout()
let maxWidth = cell.barView.frame.width
print("barview maxWidth is \(maxWidth)")
// prints 476.0
【问题讨论】:
-
您面临的问题是什么?您里面的物品显示不正确?
-
您是否检查过单元格视图的自动布局属性。宽度有什么限制吗?
-
@jo3birdtalk - 问题是它在 iphone5S 上运行的设备的屏幕宽度为 320。而 maxwidth 显示的比这大得多。
-
@triple.s - 单元格内容视图上没有设置约束。它们都是后代约束。
-
首先,您不应该为屏幕大小而烦恼。让自动布局为您完成工作。使用自动布局,无论是在 iPhone 5s 上显示,还是在 iPad Pro 尺寸上显示,都无所谓。编辑您的问题以显示单元格内的项目,以便我可以进一步帮助您。
标签: swift uitableview uiview