Swift Xcode 自动布局约束仅针对 iphone 6 plus 和 ipad
Posted
技术标签:
【中文标题】Swift Xcode 自动布局约束仅针对 iphone 6 plus 和 ipad【英文标题】:Swift Xcode auto layout constraints only target iphone 6 plus and ipad 【发布时间】:2015-06-23 21:23:52 【问题描述】:自动布局“选择器”如下图所示:
但如果我只想针对 iphone 6 plus 和 Ipad 怎么办?
我使用约束 compact width |任何高度,以便仅针对 3.5 - 4.7" 显示器。
但我应该使用什么才能仅针对 iphone 6 plus / ipad? - 任意宽度|任何高度 都以它们为目标,但不会覆盖 compact width | 中设置的规则任何高度?
当应用程序在 iphone 6 plus 或 ipad 上运行时,我想要增加三个标签之间的间距。另请注意,我的应用仅在重要的情况下以纵向模式运行。
提前致谢,
【问题讨论】:
【参考方案1】:您不应该通过设备对自动布局进行分类,而应按班级大小分类。由于主题演讲中讨论了新的 ios 9 iPad 多任务功能,这是今年 WWDC 的一个巨大重点。
我建议为您的布局尝试以下想法。请注意,这只是对您需要在 IB 中实现的内容的直观解释。
所有三个标签都具有相等的宽度约束
|---[first label, maxwidth = x]--[second label]--[third label]---|
这将使所有三个标签具有相同的宽度并均匀分布。这种方法有助于所有类大小的紧凑宽度 |紧凑的高度等。如果您需要帮助找到一种方法来使间距均匀,请尝试添加填充视图:
|[uiview][first label, maxwidth = x][uiview][second label][uiview][third label][uiview]|
在这种情况下,每个[uiview]
都将具有相同的宽度以及清晰的背景颜色,这样标签之间的边距将是均匀的,并且这些视图不会“看到”,但有助于自动布局。
如果您需要有关此自动布局实施的帮助,请在 cmets 中告诉我。
【讨论】:
谢谢,您的回答让我找到了正确的方向。但我真正想做的是将第一个标签放在屏幕边缘和第二个标签之间。然后以相同的方式将标签三个居中。 |---[第一个标签,maxwidth = x]--[CENTER 标签]--[第三个标签]---|中心标签位于屏幕中间的 X 中心。然后将标签中心和屏幕边缘之间的每一侧的标签居中 |ScreenEDGE---[左标签]---[中间标签]---[右标签]---ScreenEDGE|所以左标签应该在屏幕左边缘和中间标签之间居中,右标签应该在屏幕右边缘和中间标签之间居中 使用|[uiview][first label, maxwidth = x][uiview][second label][uiview][third label][uiview]|
应该可以得到你想要的东西,第一个和第三个标签从中心(中间)标签分别居中,但是,如果你真的想设置它这样,我建议使用两个在中心作为容器相遇的UIView
s,如下所示:|[ uiview ][ uiview ]|
|[ [first label ][ [second label] ]|
| [middle label - centered to view]|
但这会打开可能重叠的中间标签。
这个答案没有任何意义。
@Arcrammer 堆栈视图使这更容易,但在您可以为 iOS 9 设置基本目标之前,这是我使用的 hack 类型。如果您有其他想法来完成这项工作,请告诉我!以上是关于Swift Xcode 自动布局约束仅针对 iphone 6 plus 和 ipad的主要内容,如果未能解决你的问题,请参考以下文章
无法正确地自动调整自动布局和堆栈视图(Swift 3、Xcode 8)