我正在学习约束并花了一整天将它们应用到以下屏幕。它在横向模式下无法正常显示。基本上我没有得到如何修复标签之间的垂直空间 - 欢迎使用BBBB和文本字段 - 用户名,以便文本字段始终显示在标签下方,但它们之间的间距根据不同大小的屏幕进行调整。如果我去Pin \ Vertical空间,它会自动修复常量值。
答案 0 :(得分:0)
删除标签(或将其移开)。
使用视图填充要调整大小的空间。
将此视图约束到父视图上方和下方以及侧面的对象。
将您的标签放入此视图并将其约束到此视图的顶部并居中于该视图。
您可能需要更改其上方和下方对象的约束,以阻止它们以不需要的方式更改高度。
此新视图现在应该在设备更改方向时调整大小,但标签应保留在其顶部。
重复布局的其他区域(即将不需要的东西放入子视图中并约束这些视图以相应地调整大小)。尝试使用可变高度,固定高度约束和“相等高度”对您添加的视图的约束,以使其根据需要调整大小。
编辑:但是在该视图中有很多垂直堆叠的项目 - 您可能永远不会将它们全部放入水平方向。您可能需要删除一些,或添加滚动视图或强制该视图仅以纵向模式布局或...不要忘记检查它是否适用于您所定位的所有设备。
答案 1 :(得分:0)
_contentViewHeight.constant = self.view.frame.size.height;
现在它以横向模式滚动,而在potrait模式下,它会滚动。
答案 2 :(得分:-1)
我一直遇到Autolayout问题。但我终于找到了克服由此产生的许多问题的方法。 我只是使用容器 - 像ScrollView或甚至是普通的旧UIView,将所有控件放在其中。而已。这使自动布局更容易找出约束。在你的情况下你可以使用UIView。
- 通过删除你拥有的所有约束来启动我将通过选择XIB中的每个控件并查看它是否有宽度/高度约束来启动,选择它然后按删除键然后在项目浏览器的底部你&# 39;将看到自动布局选择每个然后删除的所有约束。这应该摆脱任何自动布局可能有的抱怨。
- 在主视图中放置一个UIView对象
- 移动其中的所有控件。然后
- 为容器视图添加必要的约束,以便它以不同的方向调整大小,并且不用担心容器视图中的任何约束(自动布局会自动计算出来)。
这通常对我有用。