使用大小类时,UITableViewCell子视图报告的宽度不正确

时间:2014-08-28 23:54:46

标签: ios uitableview swift xcode6

出于某种原因,在xcode 6中使用大小类时,我的单元格中的子视图的宽度不正确。我有一个UIImageView的自动布局用于调整大小(常量:顶部为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

即使应该基于iPhone 5S上的320x100单元格<{1}}。

所有内容都正确显示,但我想使用子视图的宽度进行其他子视图的某些计算。关于为什么会发生这种情况的任何想法?错误报告或按设计工作?

修改

此问题仅适用于最初加载的单元格。当细胞被重复使用时,问题不会出现。重用单元格的w: 300.0 h: 80.0输出:

println

3 个答案:

答案 0 :(得分:22)

在访问框架之前,在cell.layoutIfNeeded()中呼叫willDisplayCell:forRowAtIndexPath。这样就可以了。

答案 1 :(得分:3)

我也遇到过这个问题。当您动态更改视图的大小时,子视图需要相应地更新其值。您在更新之前引用这些值。

我的工作是在更新后引用这些值。在这种情况下,它位于viewDidAppear()中。希望这提供了一些用途。我花了一些时间试图搞清楚。

答案 2 :(得分:0)

在调用[cell layoutIfNeeded]后,您可以尝试使用方法layoutSubviews()来获取子视图的“正确”值。