如何在一个子视图大小更改时调整其他子视图和父视图的大小

5 iphone xcode subview uiview

我有一个类似于邮件应用程序的视图.我有一个滚动视图和许多其他子视图.当用户单击任何文本视图时,它会展开以显示其中的文本.例如邮件中的"到"字段.我想调整其他子视图的大小,使其从扩展区域下方开始.我怎样才能做到这一点.

我通过IB创建了视图,并将其标记为灵活的上边距以促进此操作.但没有任何事情自动发生,因此我想知道我是否需要调用sizethatFits/setneedsLayout.

Rob*_*ier 7

子视图调整大小后,调用[[self superview] setNeedsLayout].在你的superview中,实现-layoutSubviews做实际的布局.你必须自己计算一切.固定/灵活边距与调整超级视图的大小有关,而不是与对等视图相关.默认-layoutSubviews什么都不做; 它只是在适当的时候被调用.

如果您需要强制布局在特定点发生,那么您可以调用-layoutIfNeeded自己或您的超级视图.阅读有关此方法如何工作的文档.一般来说,你不需要打电话给这个.如果您只是使用,它通常会在适当的时间被调用-setNeedsLayout.