iOS Autolayout:处理不同的屏幕高度
Posted
技术标签:
【中文标题】iOS Autolayout:处理不同的屏幕高度【英文标题】:iOS Autolayout: Handling different screen heights 【发布时间】:2015-01-26 14:53:05 【问题描述】:我正在拼命地尝试掌握自动布局,并且需要有关如何最好地处理以下场景的建议。我正在使用一个现有的设计,我需要对其进行适当的布局,以便它可以在任何 iPhone 屏幕尺寸上运行。
对于每个屏幕,我已经确定了应部分展开/折叠以补偿屏幕高度差异的应用程序部分。我已经在下图中说明了这一点。首先,这是解决问题的最佳方法吗?
假设这是解决问题的最佳方法,应如何添加约束以固定视图 1、2 和 4 的定位和高度,同时允许视图 2 及其内容根据设备视图高度进行伸缩?
我已经对约束进行了大量实验,但无法达到图示的结果。
【问题讨论】:
告诉我们你被困在哪里......也许吧。 【参考方案1】:我会这样做。
所有观看次数:
将前导和尾随空格与超级视图对齐查看 1:
将顶部与超级视图或顶部布局指南对齐
添加固定高度
视图 4:
将底部与超级视图或底部布局指南对齐
添加固定高度
视图 3:
底部与视图 4 对齐(使用垂直间距)
添加固定高度
视图 2:
对齐顶部以查看 1
底部对齐以查看 3
【讨论】:
这个答案的布局很好。 +1 谢谢。在这个回复和我几天前添加的另一个问题的回复之间,我现在已经很好地掌握了自动布局。【参考方案2】:如果您想要图片中的结果,请按以下步骤操作。您可以选择使用 wAny|hAny 尺寸类。
-
从上到下,将每个相邻视图之间的垂直间距设置为 0。
将 view1 和 view3 和 view4 的高度约束设置为静态值。
那么view2的高度应该在不同的屏幕尺寸上有所不同。
从您的图片来看,您的 view1 几乎占据了屏幕空间的一半。所以我的建议是让它的高度成比例,你可以设置view1和它的superview等宽,然后修改这个等宽约束的比例为0.5。您可以对图片中的其他视图执行相同操作。
【讨论】:
【参考方案3】:除了其他答案之外,视觉格式应该看起来像这样
V:|[view1(HIGHTV1)][view2][HIGHT3(HIGHTV3)][view4(HIGHTV4)]|
用静态尺寸替换 HIGHTVX
【讨论】:
以上是关于iOS Autolayout:处理不同的屏幕高度的主要内容,如果未能解决你的问题,请参考以下文章
iOS:UIView 的 Autolayout 拉伸高度过多(Xcode 8、Swift 3)