0

我试图做一些看起来应该不费吹灰之力的事情。但是,唉,我太笨了,无法弄清楚这一点。所以我需要帮助。

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

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

我还想指出,当它在模拟器中加载时,我在 Interface Builder(启用自动布局)中看到的内容与应用程序完全不同。

PS - 现在我会继续玩这个。也许我最终会达到一个灵光乍现的时刻。

*更新了屏幕截图*

这是我在 Interface Builder 中的布局: 这是我在 Interface Builder 中的布局:

这就是它最终在模拟器中的样子: 这就是它最终在模拟器中的样子:

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

4

2 回答 2

2

在我看来,您从蓝色视图的顶部边缘到向下推动内容的超级视图有一个固定的高度约束 - 相反,您可能在它上方有一个固定高度的视图,它正在平滑事物。尝试将蓝色视图的顶部边缘固定到超级视图并降低优先级或将其从相等更改为小于等于约束。

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

xcode 的外形尺寸按钮

于 2013-04-21T21:50:16.097 回答
1

您可以简单地关闭自动布局。弹簧和支柱可以很容易地使您的子视图达到父视图高度的 25%。

或者,您当然可以坚持使用它,但您需要调整代码中的约束。在当前版本的 Xcode 中没有办法建立这样的约束。在 IB 中设置约束以将框固定到窗口底部并固定高度,为高度约束设置一个出口。然后在 中-viewDidLoad,移除高度约束,并在父视图中添加一个新的约束来表达你想要的高度关系。

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

于 2013-04-22T22:27:19.583 回答