使用大小类时,UITableViewCell子视图报告的宽度不正确
出于某种原因,在xcode 6中使用大小类时,我的单元格中的子视图的宽度不正确。 我有一个UIImageView
,自动布局用于resize(常量:顶部为10,L / R,底部)。
从tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!)
调用以下内容时:
println("w: \(cell.mapSnapshotImageView.bounds.size.width) h: \(cell.mapSnapshotImageView.bounds.size.height)")
我总是得到:
w: 580.0 h: 80.0
即使它应该是w: 300.0 h: 80.0
基于iPhone 5S上的320×100单元格。
一切都正确显示,但我想使用子视图的宽度进行其他子视图的一些计算。 有关为什么会发生这种情况的任何想法? 错误报告或按设计工作?
编辑:
此问题仅适用于最初加载的单元格。 当细胞被重复使用时,问题不会出现。 重复使用的单元格上的println
输出:
w: 300.0 h: 80.0
我也遇到过这个问题。 当您动态更改视图的大小时,子视图需要相应地更新其值。 您在更新之前引用这些值。
我的工作是在更新后引用这些值。 在这种情况下,它位于viewDidAppear()中。 希望这提供了一些用途。 我花了一些时间试图搞清楚。
在访问帧之前,在willDisplayCell:forRowAtIndexPath
调用cell.layoutIfNeeded()
。 那就行了。
在调用[cell layoutIfNeeded]之后,您可以尝试使用方法layoutSubviews()来获取子视图的“正确”值。