iOS / XCode自动布局问题。更轻松的方式?

时间:2015-05-23 04:16:56

标签: ios iphone xcode layout constraints

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

initialController

足够公平。带有文本的框,左/右边距相等,上边距较小。现在,当我运行任何大小的设备时,它会从设备视图中偏斜/切断。因此,Xcode认为,尽管我将整个标签放在视图控制器中,它应该显示在屏幕中间。不要得到它,但没关系,所以我继续将右侧,左侧和顶部边距添加自动布局约束。结果是:

withMargins

所以它集中了它,这很好,但是现在它只是忽略了这样一个事实:我把宽度做得更大而且它只是缩小了它?对于这么简单的事情,这似乎非常......不可靠。然后我添加了“宽高比”约束,它似乎在所有设备中都很好......最后!

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

aspectAndHorizontal

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

为什么预览和模拟器不同,我想(从阅读其他问题)这是因为我添加这些之后会有一些警告。一个是水平和垂直位置最初是一个,并且在运行时将是不同的。但是当我运行它时,它肯定会保留最初的那些而不是他们说它将在运行时的那些。它还告诉我垂直位置是模棱两可的......好吧,我只设置了一个中心和宽高比......很明显,不知道我怎么解决这个错误。当我删除水平中心时它解决了它......但现在它没有居中,这是我想要的一步。

长话短说,我该如何处理这个问题。即使对于最简单的自动布局细节,我的预览和模拟也不准确。现在的应用程序非常复杂,并且在每台设备上都可以扩展和工作,这似乎与一个标签不一致。

有没有人有任何好的文章,建议或任何可以帮助我的东西?这种自动布局的东西似乎是如此挑剔,而且这就是我所知道的所以我必须处理它。并且甚至不让我开始为什么文本不能与标签一起扩展...为什么我希望iphone 4上的文本在ipad上是相同的,即使我的标签随着设备的尺寸增加?

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

2 个答案:

答案 0 :(得分:1)

习惯它需要一些经验,但是一旦你得到它,你就可以获得它并且非常容易。

基本上,经验法则是在实际对象的大小方面不完全信任您在故事板中看到的内容。假设您在主视图中水平和垂直居中UIView。确实,它会尝试保持UIView的大小,但将其置于任何大小的设备中,但我绝不会只留下它。我要么:

  1. 添加宽度和高度限制
  2. 添加宽度/高度约束和宽高比约束
  3. 添加宽度约束以及顶部和底部约束
  4. 添加高度约束以及前导和尾随约束
  5. 添加顶部,底部,前导和尾随约束
  6. 换句话说,对象的确切大小应始终通过约束来确定,而不是由UIView本身确定。这样可以避免挑剔的行为,并确保它完全按照您的意图在任何设备上显示。

答案 1 :(得分: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/