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

iOS / XCode Auto Layout Woes. Easier Way?

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

很公平。一个带有文本的框,在 left/right 上具有相等的边距和较小的上边距。现在,当我 运行 任何尺寸的设备时,它都会从设备视图中关闭 skewed/cut。所以马上出于某种原因 Xcode 认为尽管我将整个标签放在视图控制器中,但它应该显示在屏幕中间。不明白,但没关系,所以我继续往右、左和上边距添加自动布局约束。结果是:

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

我好奇地也简单地尝试摆脱所有这些,并简单地添加 "aspect ratio" 约束和 "horizontal center in container" 约束。在主故事板预览(不是模拟器)上它看起来像这样:

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

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

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

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

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

习惯它需要一些经验,但是一旦你习惯了,你就永远习惯了,而且非常容易。

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

  1. 添加宽度和高度限制
  2. 添加 width/height 约束和纵横比约束
  3. 添加宽度约束以及顶部和底部约束
  4. 添加高度约束以及前导和尾随约束
  5. 添加顶部、底部、前导和尾随约束

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

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