检测加载方向

Detecting orientation on loading

当我的模拟器在 portrait 和我的 viewcontroller loads initially 时,它打印出 Landscape 而不是 Portrait 但是当我改变方向时,它正确显示方向等等。我做了以下

override func viewDidLayoutSubviews() {
  super.viewDidLayoutSubviews()

  if (UIDevice.current.orientation == UIDeviceOrientation.portrait || UIDevice.current.orientation == UIDeviceOrientation.portraitUpsideDown)
  {
    print("Portrait")
  }
  else
  {
    print("Landscape")
  }
}

我不知道为什么它在最初加载时显示错误的方向但是一旦我旋转一切似乎都有效。

P.S。模拟器最初加载时,方向似乎是unknown,所以它选择了else condition,如何避免这种情况发生并确定正确的方向?

您可以通过UIApplication.shared.statusBarOrientation.isPortrait or UIApplication.shared.statusBarOrientation.isLandscape查看当前方向。

if UIDevice.currentDevice().orientation.isLandscape.boolValue {
    print("landscape")
} else {
    print("portrait")
}