我有一个视图(UIScrollView
),它可以加载一些数据,并在各种子视图中显示各种数据。所以我有大约10个子视图(UIImageView, UILabel
),我需要以编程方式考虑它们不可预测的内容(即UILabel
的不同高度/宽度,取决于文本属性)。
从我读过的内容来看,Cocoa-touch没有布局框架。
这样做的最佳方式是什么?
据我所知,我应该将内容放在视图中,然后在调用sizeToFit
方法后开始根据帧来计算坐标。
这种方法非常容易出错。真的没有别的办法吗?
答案 0 :(得分:6)
你是对的,没有自动布局管理器。对UIScrollView
进行子类化并覆盖layoutSubviews
可能是实现自定义算法的正确方法。然后,您可以致电setNeedsLayout
进行布局。
答案 1 :(得分:3)
Cocoa中的布局通常使用自动调整大小(使用autoresizingMask
)来完成。您可以从一些硬编码的初始大小开始,例如200x200;将您的子视图放在此视图上并相应地设置自动调整标记。然后可以将此视图的大小自由调整为其实际大小,由其父视图/窗口确定。无论您使用Interface Builder还是以编程方式执行,该过程都是相同的。
如果您需要垂直堆叠视图,可以使用表格视图。
如果你想要更复杂的布局,你需要自己实现它,覆盖layoutSubviews
。
答案 2 :(得分:1)
我不知道任何自动布局管理器等。
因此,我认为您必须计算所需的位置和尺寸,并手动更新子视图的frame
。
编辑:我找到了this question,其中Brad Larson指出了一个自定义布局管理器的示例。 HTH
答案 3 :(得分:-1)
您可以使用Interface Builder创建视图,然后将元素拖放到其中。