使用大小类时,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()来获取子视图的“正确”值。