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

And*_*son 12 uitableview ios 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)")
Run Code Online (Sandbox Code Playgroud)

我总是得到:

w: 580.0 h: 80.0
Run Code Online (Sandbox Code Playgroud)

即使它应该可以w: 300.0 h: 80.0根据我的320x100在iPhone 5S细胞.

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

编辑:

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

w: 300.0 h: 80.0
Run Code Online (Sandbox Code Playgroud)

ben*_*aus 25

cell.layoutIfNeeded()willDisplayCell:forRowAtIndexPath访问帧之前调用.那就行了.


run*_*ase 3

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

我的解决方法是在更新后引用这些值。在本例中,它位于 viewDidAppear() 中。希望这能提供一些用处。我花了一段时间试图弄清楚。