2016-03-21 54 views
0

我想从xcode 7的故事板中使用自动大小类来定位控制器中的UI元素。我遇到的问题是,当我尝试使用“添加缺少的约束”功能(位于控制台的右下角)时,它会正确定位我的用户界面元素,除了最后一个元素(图片描述更好) 。下面的第一张图片显示了故事板文件,我只希望3个按钮(堆叠在彼此之上)的宽度和长度相同,以便位于任何屏幕的右上角。Swift - 自动约束

enter image description here

然而,当我添加约束并运行该仿真,好像顶部两个按钮具有正确的长度和宽度,但第三个按钮正确定位是不适当的(下图)。

enter image description here

所以我的问题是,我忘记了一步,使所有的按钮定位自己?或者我应该尝试将所有内容都转换为百分比,并根据屏幕百分比放置UI元素(如果是这样,我将如何去做)?

我也试着在第三个按钮下添加另一个空白按钮(删除按钮标签)并添加这样的约束,但它对我没有效用。如果您有任何建议,请告知我,谢谢!

+0

改为使用UIStackView。查看一些YouTube视频或使用此链接 - https://www.hackingwithswift.com/read/31/2/uistackview-by-example https://www.raywenderlich.com/114552/uistackview-tutorial -introducing-stack-views – Tuhin

回答

1

实际上,你可以看到在行动的解决方案,如果您使用预览屏幕,而设置您的自动布局限制。我只是创建了一个类似的视图和按钮,并贯穿整个过程。我给按钮着色并命名它们以使事情变得明显。

  1. 我添加了三个按钮。此时,预览中没有任何按钮显示。

enter image description here

enter image description here

  • 我然后设置为Button1自动布局约束。如果你想把按钮固定在右上角,那么你不需要担心前导约束。你需要宽度,高度,顶部和尾部。
  • enter image description here

    enter image description here

    现在Button1的将捕捉到它的预览屏幕的右上角位置。

    enter image description here

  • 现在做用于将Button2同样的事情。设置宽度,高度,顶部(垂直空间到Button1)和拖尾。
  • enter image description here

    enter image description here

    将Button2现在卡扣到预览位置。

    enter image description here

  • 现在同样再次事情将Button3。您将第一个按钮固定在屏幕的右上角。然后Button2到Button1的底部和屏幕的右边缘。然后再次为Button3。如果您喜欢尾随空格,您也可以对齐第二个和第三个按钮的边缘。
  • enter image description here

    enter image description here

    现在,你会在你的按钮正确定位预览看到,无论设备。

    enter image description here

    只要你指定的高度和宽度为每个按钮,您不必担心左边缘或在所有屏幕的底部边缘。他们都知道“坚持”右上角,他们知道什么尺寸。

    **注意:如果您不熟悉“预览”选项... 打开故事板后,按住Option并再次选择故事板以获取右侧故事板的另一个副本。突出显示您在左侧感兴趣的视图控制器。在右侧,选择预览选项,如下所示。

    enter image description here

    现在,你有你的故事板和侧预览侧,所以你可以看到任何自动布局的确切影响您所做的更改。您还可以添加或删除设备到预览中。

    enter image description here

    2

    在你的情况下,Autolayout你需要给UIButton的约束是4个约束。

    1. 领导
    2. 尾随
    3. 宽度
    4. 身高

    如果你错过其中任何一个,那么你一定会得到一个错误。那么,你的错误是什么?

    到第三个UIButton,你没有给出高度,而你已经给出了上面的两个按钮。

    所以,只需删除UIButton的底部约束,并给予高于UIButton以上的同等高度。

    仅供参考,从未使用Add Missing Constraints未经您方确认。

    更新:

    看看这个视频删除trailingleading保证金:

    http://sendvid.com/1h8deg18

    +0

    所以我这样做了第三个按钮,但是对顶部相邻元素和侧边距的约束给出了-20的默认间距,我不能将其更改为0,所以我认为xcode wouldn'让我这样做。 – rj2700

    +0

    你可以做,等待我会告诉你如何@ user1342086 –

    +0

    @ user1342086检查编辑答案! –