如何使用尺寸等级为小型iPhone和iPhone 6加上不同的设计?

时间:2015-08-06 18:04:12

标签: ios iphone xcode interface-builder xib

是否可以在Interface Builder for iPhone 6 plus和其他使用尺寸类别的iPhone中进行不同的设计?我只需要肖像模式。

根据一些教程(http://swiftiostutorials.com/using-size-classes-xcode-6/),它似乎应该是可能的。同样在IB Compact + Any中似乎适用于小型iPhone:

enter image description here

所有iPhone的

和Compact + Regular:

enter image description here

但是当我试图接受不同的设计时,它不起作用。例如,如何隐藏小型iPhone的视图并将其显示为iPhone 6 plus? enter image description here

2 个答案:

答案 0 :(得分:2)

可悲的是,你只能在横向上做到这一点(iPhone 6 plus的特征集合与其他iPhone系列不同)。

IB的措辞方式有点误导。您正好期望 w 紧凑 h 常规覆盖 w 紧凑 h Any的规则。问题是iPhone 6 plus也属于 w Compact h 常规类别。

在iPhone 6 plus上运行时打印视图的特征集合证明了这一点:

<UITraitCollection: 0x7f968ada42c0; _UITraitNameUserInterfaceIdiom = Phone, _UITraitNameDisplayScale = 3.000000, _UITraitNameHorizontalSizeClass = Compact, _UITraitNameVerticalSizeClass = Regular, _UITraitNameTouchLevel = 0, _UITraitNameInteractionModel = 1>

这两个特别是:

_UITraitNameHorizontalSizeClass = Compact, _UITraitNameVerticalSizeClass = Regular

您可以在运行时更改/覆盖特征(即告诉视图“无论您的想法,我说您有紧凑的高度等”)但是对于您的情况我只需打开屏幕的高度并手动隐藏视图基于该信息。

答案 1 :(得分:1)

在纵向方向上,您无法使用尺寸类来区分iPhone 6和6+。您必须通过在加载视图后检查屏幕高度以编程方式执行此操作。

人机界面指南显示,两部手机都具有相同的特征集:Compact width/Regular height。第一张图片中的集合是紧凑宽度/任何高度,其中包括紧凑宽度/常规高度 - 这就是为什么如果您在一个视图中安装视图而不是另一个视图中没有看到差异的原因。

虽然不适用于您的情况,但值得注意的是,可以区分横向方向的两个设备,因为6+使用常规宽度/紧凑高度,但较小的手机使用紧凑宽度/紧凑的高度。