如何使用XCode的新自动布局功能做到这一点?

时间:2013-04-21 20:05:20

标签: xcode autolayout

我试图做一些看似应该毫无疑问的事情。但是,唉,我太笨了,无法想出这个。所以我需要帮助。

我有一个iphone模拟器(垂直方向)。 主视图有一个子视图(蓝色UIView),应显示在屏幕的底部25%。最终渲染的屏幕基本上看起来像白色屏幕,底部是蓝色。

我希望子视图的边缘拥抱屏幕边缘。但这不是我正在努力的部分。当我突然旋转模拟器的方向时,配置这个子视图的高度(以及其内容的布局,如果有的话)很棘手。如果我这样做,那么一切都看起来很奇怪。

我还要注意,我在界面生成器中看到的内容(启用了自动布局)在应用程序加载到模拟器中时看起来与应用程序完全不同。

PS - 现在我将继续玩这个。也许我最终会到达尤里卡时刻。

*已更新屏幕截图*

这就是我在Interface Builder中的布局: This is what my layout looks like in Interface Builder:

这就像它在模拟器中看起来一样: And this is what it ends up looking like in the simulator:

*更新2 * 好。在用屏幕截图更新我的帖子后,我突然意识到模拟器看起来不像4“屏幕版本(即使它在我的电脑屏幕上也是如此)。运行4”模拟器后我可以看到布局就像IB布局。但这让我想知道为什么自动布局不够“智能”足以调整较小的3.5英寸屏幕。

2 个答案:

答案 0 :(得分:2)

在我看来,你有一个固定的高度限制,从蓝色视图的顶部边缘到超级视图,这会推动内容向下 - 相反,你可能在它上方有一个固定的高度视图,这是吸烟的东西。尝试将蓝色视图的上边缘固定到superview并降低优先级或将其从相等更改为小于等于约束。

在XCode中的IB中,您可以更改iPhone布局的画布大小,查找右侧的单个按钮,该按钮看起来像带有箭头的上方和下方的矩形,或者位于其中。在下面的屏幕截图中,它是最左边的按钮。

form factor button for xcode

答案 1 :(得分:1)

您只需关闭自动布局即可。弹簧和支柱可以轻松地使你的子视图达到超视图高度的25%。

或者,您当然可以坚持下去,但您需要调整代码中的约束。在当前版本的Xcode中无法建立这样的约束。在IB中设置约束以将框固定到窗口的底部并固定高度,为高度约束设置出口。然后在-viewDidLoad中,删除高度约束并向superview添加一个新约束,表示所需的高度关系。

这不是为了阻止你学习自动布局,而是指出它有点复杂,并且IB中的约束工具不直观且相对较弱。 WWDC视频Introduction to Auto Layout是一个很好的起点。