何时是preferredContentSize受到尊重?

时间:2014-10-28 15:19:54

标签: ios uitableview uipopovercontroller

我有一个表格视图控制器,可以在viewDidLoad之后设置它的内容。设置新内容时,我会计算preferredContentSize。在我呈现popover之前,我可以查询我的视图控制器的preferredContentSize,这是正确的。但是在演示之后我得到了popover的标准尺寸(320x480)。如果我将setPopoverContentSize:animated:与之前查询的值一起使用,一切正常。

我现在的问题是为什么它在开始时不尊重preferredContentSize权利?我做错了什么?

2 个答案:

答案 0 :(得分:6)

现在我又遇到了同样的问题。如果我将我的桌子高度计算放入viewWillAppear而不是它的工作:

public override void ViewWillAppear (bool animated)
{
    base.ViewWillAppear (animated);

    TableView.LayoutIfNeeded ();
    this.PreferredContentSize = new SizeF (320f, TableView.ContentSize.Height);
}

代码在C#中,但您可以轻松地将其转换为Objective-C或Swift。

答案 1 :(得分:1)

我将测试代码转换为Swift 2.0。

override func viewWillAppear(animated: Bool) {
   super.viewWillAppear(animated)
   tableView.layoutIfNeeded()
   preferredContentSize.height = tableView.contentSize.height
}