2010-02-14 72 views
1

如何制作独立于分辨率的iPhone视图控制器,它可以像浏览器堆栈HTML元素一样堆叠它的子视图?iPhone应用程序中类似HTML的布局

这是example。在顶部可以包含1-6行文本的一个UILabel;标签下方的两行UIButtons;左边的按钮可以有短或长的标题。我希望按钮出现在文本结束的右侧垂直位置;我希望左侧按钮按照其标题的长度缩放,右侧按钮可以自动重新定位。

换句话说,当内容发生变化时,我希望这种UI最自然的行为。

有没有办法告诉Interface Builder或UIKit自动实现这种行为?

回答

1

Cocoa的布局管理器在iPhone上不可用。唯一的自动布局工具是UIViewautoresizingMask属性,这不足以解决您的问题。所以必须自己编码。

合适的地方是覆盖视图的layoutSubviews方法。只要视图边界发生变化,它就会自动调用。一些控件还有一个像样的自动调整内容行为,称为sizeToFit方法。

0

我会看看如何Silverlight handles layout,并为iOS创建一个类似的容器集合。它看起来并不像任何人做的那样,所以我打算为我的下一个项目做到这一点。

基本上,有不同的容器控件以不同的方式布置子控件。例如,有一个StackPanel,根据您可以设置的各种属性堆叠子控件。还有一个网格,当你想要像HTML表格那样构造东西的时候。它们设计合理,因此您可以使用各种组合的容器,以少量代码实现相当广泛的布局。