我目前正在设置一个最终应该是这样的登录屏幕:
我已经成功完成了在所有屏幕尺寸上创建所需外观所需的所有约束,但是,我似乎无法弄清楚正确对齐“没有帐户?注册”所需的约束。我把它设计成“没有帐户?”是UILabel,“注册”是UIButton。我刚刚将这些并排排列。
UIButton,“注册,有以下限制:
这些约束似乎可以实现4英寸及以下屏幕尺寸所需的尺寸。但是4.7英寸和5.5英寸(不包括iPad)在UILabel和UIButton之间有很大的间距。我读过Ray Wenderlich的教程自动布局,仍然无法弄清楚问题(我是新手自动布局,但我知道我在做什么。我不只是添加随机约束,希望它有效)。
这就是我所有目标设备上的样子:
请注意,随着屏幕尺寸的增加,标签和按钮之间的间隙也会增加。任何帮助表示赞赏。
答案 0 :(得分:3)
您正在将标签的前导空格设置为其超级视图,并且您正在将按钮的尾随空格设置为其超级视图。很明显,如果超级视图变宽,它们将会进一步分开。
所以,如果那不是你想要的,那就不要这样做。
您想要做的事情的实际解决方案非常棘手。您希望这两个对象表现为一个组,并且您希望该组居中。没有简单的方法来表达这一点。您需要制作一个群组。换句话说,您将需要一个容器视图,为该视图提供绝对宽度并使其居中,并将这两个对象放在容器中。
iOS 9中的新功能,UIStackView可以为您提供帮助。
答案 1 :(得分:1)
另一种方法是使用几个UIViews作为间隔物。我有时更喜欢这种遏制,但这可能是一种品味问题。
从UILabel中删除前导约束。
从UIButton中删除尾随约束。
在UILabel前添加一个背景清晰的UIView。将此UIView中的前导约束设置为常量为0的容器前沿。将常量约束设置为UILabel,常量为0.
同样,在UIButton之后添加另一个UIView。将此UIView中的前导约束设置为常量为0的UIButton。将此UIView的尾随约束设置为常量为0的容器后端。
两个UIView都需要Y位置和高度。这些在某种程度上是任意的,所以我会用你的UILabel设置Align Center-Y约束,并设置5的高度限制。
这里发生了魔法:选择两个UIViews并设置Equal Widths约束。这迫使UIViews在两侧占据相同的空间。
答案 2 :(得分:1)
UIStackView
对于这种情况来说太过分了。刚
UIView
。答案 3 :(得分:0)