ios中的约束

时间:2015-05-02 06:36:39

标签: ios objective-c swift

我正在学习约束并花了一整天将它们应用到以下屏幕。它在横向模式下无法正常显示。基本上我没有得到如何修复标签之间的垂直空间 - 欢迎使用BBBB和文本字段 - 用户名,以便文本字段始终显示在标签下方,但它们之间的间距根据不同大小的屏幕进行调整。如果我去Pin \ Vertical空间,它会自动修复常量值。

username and password are textfields, lines below them are views of height=1, login and forget your password are buttons, create new profile is label, blue image is a button, green one is just an image, gray is a view with an image of fringe attached to its top

enter image description here

3 个答案:

答案 0 :(得分:0)

删除标签(或将其移开)。

使用视图填充要调整大小的空间。

将此视图约束到父视图上方和下方以及侧面的对象。

将您的标签放入此视图并将其约束到此视图的顶部并居中于该视图。

您可能需要更改其上方和下方对象的约束,以阻止它们以不需要的方式更改高度。

此新视图现在应该在设备更改方向时调整大小,但标签应保留在其顶部。

重复布局的其他区域(即将不需要的东西放入子视图中并约束这些视图以相应地调整大小)。尝试使用可变高度,固定高度约束和“相等高度”对您添加的视图的约束,以使其根据需要调整大小。

编辑:但是在该视图中有很多垂直堆叠的项目 - 您可能永远不会将它们全部放入水平方向。您可能需要删除一些,或添加滚动视图或强制该视图仅以纵向模式布局或...不要忘记检查它是否适用于您所定位的所有设备。

答案 1 :(得分:0)

@Ali Beadle是对的。由于我有很多垂直堆叠的物品,因此无法以横向模式排列它们。所以,我去了scrollview。 我首先采用了ScrollView,然后是ScrollView上的一个名为ContentView的UIView。我已将ContentView的宽度等于父UIView的宽度并将其高度固定为568.在我的代码中我设置

_contentViewHeight.constant = self.view.frame.size.height;

现在它以横向模式滚动,而在potrait模式下,它会滚动。

答案 2 :(得分:-1)

我一直遇到Autolayout问题。但我终于找到了克服由此产生的许多问题的方法。 我只是使用容器 - 像ScrollView或甚至是普通的旧UIView,将所有控件放在其中。而已。这使自动布局更容易找出约束。在你的情况下你可以使用UIView。

- 通过删除你拥有的所有约束来启动我将通过选择XIB中的每个控件并查看它是否有宽度/高度约束来启动,选择它然后按删除键然后在项目浏览器的底部你&# 39;将看到自动布局选择每个然后删除的所有约束。这应该摆脱任何自动布局可能有的抱怨。

- 在主视图中放置一个UIView对象

- 移动其中的所有控件。然后

- 为容器视图添加必要的约束,以便它以不同的方向调整大小,并且不用担心容器视图中的任何约束(自动布局会自动计算出来)。

这通常对我有用。