我有一个类似于邮件应用的视图。我有一个滚动视图和许多其他子视图。当用户单击任何文本视图时,它会展开以显示其中的文本。例如邮件中的“到”字段。我想调整其他子视图的大小,使其从扩展区域下方开始。我怎样才能做到这一点。
我通过IB创建了视图,并将其标记为灵活的上边距以便于此。但没有任何事情自动发生,因此我想知道是否需要调用sizethatFits / setneedsLayout。
答案 0 :(得分:7)
当子视图调整大小时,请致电[[self superview] setNeedsLayout]
。在您的超级视图中,实施-layoutSubviews
来进行实际布局。你必须自己计算一切。固定/灵活边距与调整超级视图的大小有关,而不是与对等视图相关。默认-layoutSubviews
什么都不做;它会在适当的时候被调用。
如果您需要强制布局在特定点发生,那么您可以在自己或您的超级视图上调用-layoutIfNeeded
。阅读有关此方法如何工作的文档。一般来说,你不需要打电话给这个。如果您只使用-setNeedsLayout
,通常会在适当的时间调用它。