Xcode 6 Auto Layout - 所有设备的 UI 元素之间的恒定水平间距

Posted

技术标签:

【中文标题】Xcode 6 Auto Layout - 所有设备的 UI 元素之间的恒定水平间距【英文标题】:Xcode 6 Auto Layout - Constant horizontal spacing between UI elements across all devices 【发布时间】:2015-03-18 20:43:27 【问题描述】:

我正在 Xcode 6 上为 iPhone 5s、iPhone 6 和 iPhone 6+ 设计一个 ios 7+ 应用程序。我想为所有这些设备创建一个单一的设计,所以我使用自动布局。我希望 UI 元素之间的间距在所有设备上都相同,但我无法做到这一点。这是我的一个UIButtons 在 iPhone 6 模拟器上 100% 的屏幕截图:

(白框是间隔视图,但不要担心。)

如您所见,UIButton 的左边缘到UIViewController 的左边缘的水平间距为 37px。在 iPhone 5s 上,这个间距是 32px。我希望所有设备上的间距为 32px。在自动布局上,我将水平间距约束设置为常数 32。即使使用此设置,它似乎也在缩放间距。

如何防止水平间距缩放?

【问题讨论】:

您是否有相对于左侧边距的约束?如果是这样,请关闭边距。由于默认选择了外部视图约束,因此很容易结束边距。 【参考方案1】:

我认为您的应用尚未支持 iPhone 6。如果您的应用与 iPhone 6 兼容,则所有设备的间距将为 32 像素。否则,iOS 会绘制 320 像素宽度的屏幕并将其缩放以适合实际屏幕宽度。这就是为什么您在 iPhone 6 中获得 37px 的原因。

要使应用程序与 iPhone 6 兼容,请创建启动屏幕文件(新文件 > iOS > 用户界面)并将其指定为项目设置中的启动屏幕文件。然后应用将以设备的原生屏幕分辨率启动。

【讨论】:

以上是关于Xcode 6 Auto Layout - 所有设备的 UI 元素之间的恒定水平间距的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 Auto Layout新手体验

Xcode Using Auto Layout 不会为每个 iphone 型号优化屏幕 [关闭]

转 iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束

使用 Xcode 8 的 Interface Builder 中的 Auto Layout 和 Trait Variations 正确设计的 Storyboard 视图在 Simulator 和 De

在 Xcode 中,如何重命名 Storyboard 中的约束?

Xcode 6.4 - 无法对视图或...设置约束