iOS:启动时的尺寸 类 和设备方向

iOS: Size classes and device orientation at launch

这是我的问题:将 iPhone 6 Plus 或 iPad 旋转为例如LandscapeLeft.

假设您的应用具有以下代码(仅作为示例)

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {

    return UIInterfaceOrientationMask.Portrait 
    // mine does use All, but with this case you'll understand my question
}

时如何检测设备应该使用垂直布局还是水平布局
func willTransitionToTraitCollection(newCollection: UITraitCollection, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)

叫什么?

print(UIScreen.mainScreen().bounds.width < UIScreen.mainScreen().bounds.height)
// will return false, because we started in landscape but the layout will be forced to be vertical here

print(UIApplication.sharedApplication().statusBarOrientation == .LandscapeLeft)
// will return true, because we started in landscape but the layout will be forced to be vertical here

主要问题出现在iPad,因为两个尺寸类都是regular

我很困惑,不知道如何解决这个问题。

不要认为您的布局是垂直和水平的。只需让应用旋转,并响应尺寸 class 或尺寸变化。

在 iPad 上,尽量避免使用两种布局。只需使用自动版式自动调整比例。但是,如果您 必须 响应 iPad 上的旋转,则响应 viewWillTransitionToSize(因为特征集合不会更改)。