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]| 应该可以得到你想要的东西,第一个和第三个标签从中心(中间)标签分别居中,但是,如果你真的想设置它这样,我建议使用两个在中心作为容器相遇的UIViews,如下所示:|[ uiview ][ uiview ]||[ [first label ][ [second label] ]|| [middle label - centered to view]| 但这会打开可能重叠的中间标签。 这个答案没有任何意义。 @Arcrammer 堆栈视图使这更容易,但在您可以为 iOS 9 设置基本目标之前,这是我使用的 hack 类型。如果您有其他想法来完成这项工作,请告诉我!

以上是关于Swift Xcode 自动布局约束仅针对 iphone 6 plus 和 ipad的主要内容,如果未能解决你的问题,请参考以下文章

Swift 自动布局在 Xcode 9.3 中不起作用

无法正确地自动调整自动布局和堆栈视图(Swift 3、Xcode 8)

特定布局的 Xcode 约束

自动布局,异步加载图像到 uiimageview (Swift, xCode6)

xcode自动布局问题

在启用自动布局的情况下调整 swift/xcode 中的按钮大小