需要帮助来设置autolayout

时间:2016-09-14 13:53:40

标签: ios autolayout

iOS及其新手面对它很难设置autolayout。观看了许多视频来学习,但所有视频都能解决特定问题。没有视频涵盖将UI对象设置到其位置的所有基本规则。适当的流动。

我来自Corona背景&用于以编程方式设置UI非常好。我在这里思考的方式相同,但我认为苹果这么难,或者人们无法正确解释我。

请参阅此问题中附带的2张图片&告诉我应用于实现此UI的规则。我请求人们以一般方式解释,以便我可以使用相同的规则完成我的其他屏幕。

图片1:http://i.stack.imgur.com/MPE47.png

图片2:http://i.stack.imgur.com/qEiCm.jpg

1 个答案:

答案 0 :(得分:2)

一个非常有用的指南是

  • 每个元素都应该能够找出其位置(x和y)和大小(宽度和高度)。
  • 确保每个元素只有一种方法来确定其位置和大小。
  • 请记住,所有元素的自动布局都会相互影响。

最常用的布局限制是:

  • 顶部视图顶部与另一个视图之间的空格。
  • 尾随视图右边缘与另一个视图之间的空格。
  • 前导视图左边缘与另一个
  • 之间的空格
  • 底部视图底边与另一个视图之间的空格
  • 宽度为视图指定修复宽度(请注意,它也可以是百分比 - 宽高比)
  • 高度为视图指定修正宽度(也可以是百分比)
  • 水平居中始终将视图相对于另一个视图的水平中心对齐
  • 垂直居中始终将视图相对于另一个视图的垂直中心对齐

例如,在第二张图片中,说黄色条是一个名为titleView的UIView。

  • 通过将顶部布局约束设置为容器视图来设置titleView的位置。 y位置已设置
  • 将前导约束设置为容器视图。 x位置已设置
  • 将尾随约束设置为容器视图。视图的宽度现在将随屏幕大小而变化。 因此现在可以确定宽度
  • 将高度设置为50. 设置高度
  • 现在......如果您还设置了此视图的宽度,则会导致layoutConstraints中断,因为您已重新定义了宽度约束。然后会忽略一些约束。

layoutConstraints如何相互影响的另一个例子。让我们看看确定第二张图像的y位置。

  • 假设titleView对容器的顶部约束+高度为50。
  • currentCampaignView对titleView的底部有一个顶部约束。 (使用垂直间距)+与titleView相等的高度。 (y +高度可以计算)
  • 5个按钮的高度相等。顶部按钮的顶部空间为currentCampaignView的底部。中央按钮的顶部空间位于顶部按钮的底部。底部按钮的顶部空间位于中央按钮的底部。
  • startCampaignView与currentCampaignView具有相同的高度。顶部约束到底部按钮的底部,底部约束到容器视图。

请注意,由于视图和按钮具有相同的高度,因此在确定高度时都会考虑所有视图。因此,非常重要的是它们都是相互关联的,并且指定了可以使用的整个高度。在这种情况下,它由第一个元素titleView指定,该元素具有Container视图的顶部约束(其高度应该是已知的)和最后一个元素startCampaignView,它对Container视图具有Bottom约束。因为中间的所有视图都在y位置和高度上相关联,所以视图可以计算出每个视图的高度和y位置应该是什么。

又一个例子。 (你的第一张照片)

  • topLeftButton 将顶部约束设置为Superview。 (y),将前导约束设置为Superview(x),设置高度= 100(高度),将等宽度设置为topRightButton(注意我们还没有宽度,因为无法确定topRightButton的宽度)< / LI>
  • topRightButton 将顶部约束设置为Superview。 (y),topLeftButton的前导约束(将用于x),将尾随约束设置为superview。现在可以确定两个按钮的宽度,因为我们有一个外部startX + endX,我们知道这两个按钮相互接触并且宽度相等。因此,可用空间将被拆分以获得两个按钮的宽度。