iOS / XCode 自动布局问题。更简单的方法?

Posted

技术标签:

【中文标题】iOS / XCode 自动布局问题。更简单的方法?【英文标题】:iOS / XCode Auto Layout Woes. Easier Way? 【发布时间】:2015-05-23 04:16:55 【问题描述】:

我想知道 xCode 自动布局/约束是否真的像我想的那样令人沮丧,或者我只是不理解它们。例如,我从视图控制器中的这个基本标签开始:

很公平。一个文本框,其左/右边距相等,上边距较小。现在,当我运行任何尺寸的设备时,它会从设备视图中倾斜/切断。因此,出于某种原因,Xcode 立即认为,尽管我将整个标签放在视图控制器中,但它应该显示在屏幕的一半。不明白但没关系,所以我继续在右侧、左侧和顶部边距添加自动布局约束。结果是:

所以它居中,这很好,但现在它只是忽略了我将宽度变大并且它只是将其缩小的事实?对于如此简单的事情,这似乎非常……不可靠。然后我添加了“纵横比”约束,它在所有设备中看起来都很好......终于!

奇怪的是,我也只是简单地尝试摆脱所有这些,并简单地添加“纵横比”约束和“容器中的水平中心”约束。在主情节提要预览(不是模拟器)上,它看起来像这样:

不是我想要的,因为它没有像我想要的那样向下拉伸,他们又把它缩小了。然而......当实际在模拟器中运行它时......它看起来很完美,就像我希望它在视图控制器的第一张图片中一样。

为什么预览和模拟器不同,我想(通过阅读其他问题)这是因为在我添加这些之后出现了一些警告。一是水平和垂直位置最初是一个,并且在运行时会有所不同。但是当我运行它时,它肯定会保存最初的那些,而不是他们说它将在运行时保存的那些。它还告诉我垂直位置不明确……嗯,是的,我只设置了一个中心和纵横比……很明显,我什至不知道如何解决这个错误。当我删除水平中心时它解决了它......但现在它没有居中,这与我想要的相比有所退步。

长话短说,我该如何处理。即使对于最简单的自动布局细节,我的预览和模拟也不准确。如今的应用程序非常复杂,并且在每一种设备上都可以很好地扩展和运行,这似乎与一个标签都不相符。

有人有什么好的文章、建议或任何可以帮助我的东西吗?这种自动布局的东西似乎很挑剔,这就是我所知道的,所以我必须处理它。甚至不要让我开始解释为什么文本不随标签缩放......为什么我希望 iphone 4 上的文本在 ipad 上是相同的,即使我的标签随着设备的大小增加?

要经历很多事情,但这非常令人沮丧,在我尝试理解这些基础知识之前,我看不到自己还有很多事情要做。谢谢你,非常感谢。

【问题讨论】:

【参考方案1】:

我认为您必须首先了解约束...否则您总是让事情变得令人沮丧...要了解约束,您可以查看此链接http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1 http://mathewsanders.com/designing-adaptive-layouts-for-iphone-6-plus/

【讨论】:

谢谢!我会检查这些。【参考方案2】:

需要一点经验才能习惯,但是一旦掌握了,就永远掌握了,而且非常容易。

基本上,经验法则是,当涉及到实际对象的大小时,不要完全相信您在情节提要中看到的内容。假设您在主视图中有一个水平和垂直居中的UIView。确实,它会尝试保持 UIView 的大小,但将其放在任何大小的设备中,但我永远不会把它留在那里。我会:

    添加宽度和高度限制 添加宽度/高度约束和纵横比约束 添加宽度约束以及顶部和底部约束 添加高度约束以及前导和尾随约束 添加顶部、底部、前导和尾随约束

换句话说,对象的确切大小应该始终通过约束来确定,而不是由 UIView 本身确定。这摆脱了挑剔的行为,并确保它在任何设备上完全按照您想要的方式显示。

【讨论】:

以上是关于iOS / XCode 自动布局问题。更简单的方法?的主要内容,如果未能解决你的问题,请参考以下文章

自动布局不会在 iOS 8-Xcode 6 中立即更新帧

XCode 6.0.1 ios 7 自动布局

Xcode 4.5 和 iOS 6.x 中的故事板方向支持?

Xcode 7.3 (swift 2) 中的自动布局

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

抑制 Xcode 中的运行时自动布局警告