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

时间:2009-10-03 12:59:35

标签: iphone xcode uiview subview

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

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

1 个答案:

答案 0 :(得分:7)

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

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