我目前正在玩 sizeClasses 和 iOS8,我注意到我认为可能是一个错误(不确定它是否也仅限于模拟器或设备)但想先在这里检查一下。
在开始一个新项目时使用标准的“Master-Detail”模板,我注意到 traitcollection 在 detailViewController 上似乎不一致,具体取决于您在 iPhone 6+ 上以横向模式检查它的时间。
我在 NSLogviewDidAppear
和willTransistionToTraitCollection
DetailViewController 中添加了查看 traitCollection 和这些结果
iPhone 6+ 横屏发布
View did appear trait collection <UITraitCollection: 0x7fe76b4895f0;
_UITraitNameUserInterfaceIdiom = Phone,
_UITraitNameDisplayScale = 3.000000,
_UITraitNameHorizontalSizeClass = Regular,
_UITraitNameVerticalSizeClass = Compact,
_UITraitNameTouchLevel = 0, _UITraitNameInteractionModel = 1>
iPhone 6+ 纵向启动,导航到 DetailViewController 和 rotateDevice
<UITraitCollection: 0x7fe76b7076e0;
_UITraitNameUserInterfaceIdiom = Phone,
_UITraitNameDisplayScale = 3.000000,
_UITraitNameHorizontalSizeClass = Compact,
_UITraitNameVerticalSizeClass = Compact,
_UITraitNameTouchLevel = 0,
_UITraitNameInteractionModel = 1>
如您所见,如果手机已经在横向模式下启动,与在同一 viewController 上旋转设备相比,detailViewController 具有不同的 traitCollection。这是模拟器错误吗?或者这是预期的行为?如果是这样,那么在设计布局时对 sizeClasses 没有意义。
** 编辑 ** 我可以确认我在物理设备上看到了相同的行为
谢谢