使用 iOS 7 的自动布局的一些具体帮助

Posted

技术标签:

【中文标题】使用 iOS 7 的自动布局的一些具体帮助【英文标题】:Some specific help using iOS 7's Autolayout 【发布时间】:2013-11-27 23:03:51 【问题描述】:

我正在制作一个简单的 ios 7 应用程序 - 我尝试过的第一个应用程序之一,并且正在尝试使用自动布局功能来轻松处理我的 UI 布局,因为它非常简单,我需要支持纵向和 2 正常风景模式的味道。

这是我迄今为止的努力:

我认为我做的不对 - 基本上我有我的标题,中间有一个计时器标签和我的开始计时器按钮。

我希望在横向显示所有这些元素 - 但希望我的启动计时器在任何模式下几乎都位于屏幕底部 - 并填充横向宽度 - 我希望计时器尽可能大在标题和按钮之间。

这个应用在纵向上看起来“不错”,在横向上,按钮可能会在屏幕下方某处消失 - 但这是我想通过使用自动布局来解决的一个问题 - 我只是没有正确使用它。

请您帮助指导我哪里出错了。

【问题讨论】:

看起来你有一个约束将开始按钮上方的空间设置为 432 - 突出显示列表中的最后一个?如果是这样,则将其删除并设置按钮的高度。当方向改变时,还要检查你是否正确调整了主视图的大小。 顺便说一句,我认为您应该能够通过更改 IB 中主视图的大小来检查它是否正常工作。不记得这是否适用于 iOS 和 OS X。 【参考方案1】:

您的主要问题是所有垂直约束都从 viewController 的顶部开始。这会将按钮推入视图之外的区域。如果您运行应用程序并旋转到横向 Xcode 应该会告诉您它不能满足所有约束。您尝试将按钮定位 432 pt。从顶部和 63 pt。同时从底部,这在横向(或 3.5 英寸纵向)中是不可能的

您的约束通常应位于不同的用户界面元素之间。不要将所有内容布局到 rootView 的边缘。

水平布局是直截了当的,在这种情况下并不重要;所以我们会跳过它。让我们谈谈垂直布局:

顶部标签基本上应该是唯一对 rootView 顶部有约束的元素。 该按钮应该对 rootView 的底部有一个约束。 中间的标签应该(在我看来)在 rootView 中垂直居中。垂直居中是最容易做的事情,所以我会坚持下去。

为了防止重叠,我会在中间标签、顶部标签和底部按钮之间添加两个额外的“大于或等于”约束,并带有 20 pt。

总而言之,它应该看起来更像这样(为清楚起见,我只突出显示垂直约束):

在风景中:

【讨论】:

要添加到这一点,请记住另外三件事。 Xcode 5 不会强制可满足的约束来编译和运行,但会给出警告。约束可以是属性和 IBOutlets。每个约束的常数是约束的一个属性,可以在代码中轻松更改。 多么棒的回复马蒂亚斯 - 谢谢!如何将我的故事板切换到横向模式? 在情节提要中选择 ViewController 并查看侧边栏中的属性检查器面板。您应该在模拟指标部分找到一个方向菜单。 为什么当我转到横向时,我只看到标题和计时器标签,但没有看到我的按钮? - 现在运行代码时,它看起来很棒 - 几乎是我想要的。

以上是关于使用 iOS 7 的自动布局的一些具体帮助的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 UITableViewCell 自动布局

带有自动布局的新子视图的 iOS 7+ 缩放动画

iOS 7 自动布局 - UIScrollView 内的 UIImageView

iOS 8 上的自动布局问题(代码在 iOS 7 上完美运行)

iOS 自动布局 ios 7 与 ios 8

iOS 自动布局更改前导和尾随空格