如何使用大小 类 为小 iPhones 和 iPhone 6 plus 进行不同的设计?
How to make a different design for small iPhones and iPhone 6 plus using size classes?
是否可以在 Interface Builder 中为 iPhone 6 plus 和其他 iPhones 使用大小 类 进行不同的设计?我只需要纵向模式。
根据一些教程(http://swiftiostutorials.com/using-size-classes-xcode-6/)看来应该是可以的。同样在 IB 中,Compact+Any 似乎适用于小型 iPhones:
和所有 iPhones 的 Compact+Regular:
但是当我尝试接收不同的设计时,它不起作用。例如,如何隐藏小 iPhone 的视图并显示 iPhone 6 加?
遗憾的是,您只能对景观进行此操作(其中 iPhone 6 plus 与 iPhone 系列的其他产品具有不同的特征集合)。
IB 中的措辞方式有点误导。您期望 wCompacthRegular 覆盖 wCompact[=22 的规则是正确的=]h任意。问题是 iPhone 6 plus 也属于 wCompacthRegular 类别。
当 运行 在 iPhone 6 plus 上打印视图的特征集合证明了这一点:
<UITraitCollection: 0x7f968ada42c0; _UITraitNameUserInterfaceIdiom = Phone, _UITraitNameDisplayScale = 3.000000, _UITraitNameHorizontalSizeClass = Compact, _UITraitNameVerticalSizeClass = Regular, _UITraitNameTouchLevel = 0, _UITraitNameInteractionModel = 1>
特别是这两个:
_UITraitNameHorizontalSizeClass = Compact, _UITraitNameVerticalSizeClass = Regular
您可以在运行时 change/override 特征(即告诉视图 "no matter what you think, I say you have a Compact height etc"),但对于您的情况,我只会切换屏幕高度并根据该信息手动隐藏视图。
在纵向模式下,您不能使用大小 类 来区分 iPhone 6 和 6+。您必须通过在视图加载后检查屏幕高度以编程方式执行此操作。
人机界面指南显示这两款手机在纵向上具有相同的特征集合:Compact width/Regular height。您的第一张图片中的集合是 Compact width/Any 高度,其中包括 Compact width/Regular 高度 - 这就是为什么如果您在一个视图中安装视图而不在另一个视图中安装视图,则看不到差异的原因。
虽然不适用于您的情况,但值得注意的是您可以区分两个横向设备,因为 6+ 使用常规 width/Compact 高度,但较小的手机使用 Compact width/Compact 高度。
是否可以在 Interface Builder 中为 iPhone 6 plus 和其他 iPhones 使用大小 类 进行不同的设计?我只需要纵向模式。
根据一些教程(http://swiftiostutorials.com/using-size-classes-xcode-6/)看来应该是可以的。同样在 IB 中,Compact+Any 似乎适用于小型 iPhones:
和所有 iPhones 的 Compact+Regular:
但是当我尝试接收不同的设计时,它不起作用。例如,如何隐藏小 iPhone 的视图并显示 iPhone 6 加?
遗憾的是,您只能对景观进行此操作(其中 iPhone 6 plus 与 iPhone 系列的其他产品具有不同的特征集合)。
IB 中的措辞方式有点误导。您期望 wCompacthRegular 覆盖 wCompact[=22 的规则是正确的=]h任意。问题是 iPhone 6 plus 也属于 wCompacthRegular 类别。
当 运行 在 iPhone 6 plus 上打印视图的特征集合证明了这一点:
<UITraitCollection: 0x7f968ada42c0; _UITraitNameUserInterfaceIdiom = Phone, _UITraitNameDisplayScale = 3.000000, _UITraitNameHorizontalSizeClass = Compact, _UITraitNameVerticalSizeClass = Regular, _UITraitNameTouchLevel = 0, _UITraitNameInteractionModel = 1>
特别是这两个:
_UITraitNameHorizontalSizeClass = Compact, _UITraitNameVerticalSizeClass = Regular
您可以在运行时 change/override 特征(即告诉视图 "no matter what you think, I say you have a Compact height etc"),但对于您的情况,我只会切换屏幕高度并根据该信息手动隐藏视图。
在纵向模式下,您不能使用大小 类 来区分 iPhone 6 和 6+。您必须通过在视图加载后检查屏幕高度以编程方式执行此操作。
人机界面指南显示这两款手机在纵向上具有相同的特征集合:Compact width/Regular height。您的第一张图片中的集合是 Compact width/Any 高度,其中包括 Compact width/Regular 高度 - 这就是为什么如果您在一个视图中安装视图而不在另一个视图中安装视图,则看不到差异的原因。
虽然不适用于您的情况,但值得注意的是您可以区分两个横向设备,因为 6+ 使用常规 width/Compact 高度,但较小的手机使用 Compact width/Compact 高度。