何时尊重内容大小?

何时尊重内容大小?

问题描述:

我有一个表格视图控制器,它可以在viewDidLoad之后设置它的内容。在设置新内容时,我计算了preferredContentSize。在展示popover之前,我可以查询我的视图控制器的preferredContentSize,这是正确的。但是在演示之后,我得到了popover的标准大小(320x480)。如果我使用setPopoverContentSize:animated:和之前查询的值,一切正常。何时尊重内容大小?

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

现在我又遇到了同样的问题。如果我把我的桌子高度计算到viewWillAppear比它的工作原理:

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

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

的代码是C#,但你可以很容易地将其转换成Objective-C的或斯威夫特。

+0

这个解决方案对我来说很完美。谢谢:D:D:D:D – 2015-08-21 09:13:03

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

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