当一个子视图大小改变时,如何调整其他子视图和父视图的大小

5
我有一个类似于邮件应用的视图。我有一个滚动视图,里面有许多其他子视图。当用户单击任何文本视图时,它会展开以显示其中的文本。例如,邮件中的“收件人”字段。我希望调整其他子视图的大小,使其从展开区域下方开始。我该如何做到这一点?
我通过IB创建了这个视图,并将其标记为可灵活调整顶部边距以实现此目的。但自动调整没有发生,因此我想知道是否需要调用sizethatFits/setneedsLayout。
1个回答

7
当子视图改变大小时,调用[[self superview] setNeedsLayout]。在您的父视图中,实现-layoutSubviews方法来进行实际布局。您需要自己计算所有内容。固定/灵活的边距与调整对等视图无关,而与调整父视图有关。默认的-layoutSubviews方法不执行任何操作;它只在适当的时间被调用。
如果您需要在特定时刻强制进行布局,则可以在自己或父视图上调用-layoutIfNeeded方法。阅读有关此方法如何工作的文档。一般情况下,您不需要调用此方法。如果您只使用-setNeedsLayout,它通常会在适当的时间被调用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接