我该怎么做才能调整UIView的大小以适应其子视图?

时间:2012-05-31 11:33:17

标签: iphone objective-c ios uiview sizetofit

我知道我必须使用-sizeThatFits:方法并在superView中覆盖它。但是,我应该怎么做这个方法?我应该只计算我的View的新大小,还是应该向其子视图发送一些消息?也许-sizeThatFits:和-sizeToFit:消息?而且,何时以及如何向我的superView“说”是时候调整其框架了?

1 个答案:

答案 0 :(得分:2)

关于问题的第一部分:您的-sizeThatFits:实施不应该在子视图上调用-sizeToFit:。前者是计算视图大小的方法(根本不更改),而后者实际上更改视图的大小。

您绝对可以将-sizeThatFits:次电话转发给您的子视图,如果这有助于您查看视图的大小。

关于问题的第二部分:您通常不应该告诉您的超级视图何时调整视图大小。它应该是相反的方式:控制器或父视图应该是首先尝试调整子视图的大小。

来自Apple的文档:sizeThatFits - Implement this method if you want your view to have a different default size than it normally would during resizing operations. For example, you might use this method to prevent your view from shrinking to the point where subviews cannot be displayed correctly.

文档说的是,如果您的-sizeThatFits:实现永远不会返回低于特定大小的帧:在调整大小操作期间,该大小将基本上成为视图的最小大小。

PS:,因为在您的问题主题中,您询问如何调整视图大小以适应其内容 - 您应该使用sizeToFit来实现此目的。您需要自己为自定义视图实现该方法。