没有从故事板框架更新框架

时间:2016-01-12 14:18:58

标签: ios iphone frame cgrect

所以我想布置UITableView,我希望细胞计算自己的身高。我可以使用systemSizeFittingSize执行此操作,但这并不总是返回正确的高度,因为行仍然具有来自故事板(或xib)的框架。

我想更新帧,以便它们是设备上的内容。

我该怎么做?我尝试了setNeedsLayoutlayoutIfNeeded,但是我必须在层次结构中的最高视图上执行此操作才能获得所需的效果,因为每个视图似乎都使用了超视图的框架。

我在我的viewcontroller中设置tableViewDataSource并在reloadData中调用viewDidLoad

有没有办法在调用viewDidLoad之前设置正确的帧?

编辑:我想将子视图的高度赋予我viewDidLoad中的布局对象,以便它可以发挥其魔力,提供一个漂亮的布局。现在这个对象只进行布局计算。我注意到我在view.frame.size.height中请求的高度(通过viewDidLoad)与我的故事板中的高度相同,再次告诉我在viewDidLoad中框架尚未更新...有解决方法的人吗?

1 个答案:

答案 0 :(得分:-1)

我认为tableView:heightForRowAtIndexPath:可能是您需要的东西:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/#//apple_ref/occ/intfm/UITableViewDelegate/tableView:heightForRowAtIndexPath

但只有在您知道之前的尺寸后才可以在viewDidLoad之前设置正确的帧,然后您可以在init中计算它。