您将能够使用 iOS6 中的 AutoLayout 来执行此操作。对于一个应该在iOS 6.0之前运行的应用程序,你必须自己做,但这并不是很复杂。
实际上我已经实现了一个类来做到这一点(那是很久以前的事了,我希望它仍然有效,但没有理由不这样做)。此类OHStackView
是UIView
自动水平或垂直布局其子视图以堆叠或对齐它们的子类。
您可以要求OHStackView
水平或垂直堆叠其子视图(一个在另一个之上等),或对齐它们的上/下/左/右边框或它们的中心,甚至指定每个子视图之间的填充。每次其中一个子视图更改其框架或大小时,OHStackView
都会自动重新布局所有相关视图以重新对齐所有内容。
(例如,使用您的两个 UILabel,对您的标签进行简单调用以sizeToFit
使它们根据内容调整其大小将自动重新布局周围的所有内容)
提供了一个示例项目,因此请随时对其进行测试。
注意:IIRC,我的子类没有考虑子视图的“隐藏”属性。if (v.hidden) continue;
但是您可以通过在其实现的for
循环中添加一个条件来轻松添加对此行为的支持,以便layoutSubview
在布局算法中仅考虑非隐藏视图。
高温高压