应用程式可旋转为横向和纵向,但不会上下颠倒旋转

时间:2019-10-10 17:31:17

标签: ios autorotate

在我的手机(iOS 13.1.2)上运行简单的概念验证iPhone应用程序时,它不会上下颠倒旋转。它将旋转到任意一个横向方向都很好,但不会倒置。一件奇怪的事是,还有一个UITextEffects窗口,其视图控制器被调用supportedInterfaceOrientations(它们返回.allButUpsideDown,与观察到的行为相匹配)。该项目为here,但我将内联显示所有代码。

AppDelegate.swift:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
  var window: UIWindow?

  func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    return .all
  }

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    let c = ViewController()
    window = UIWindow(frame: UIScreen.main.bounds)
    window?.rootViewController = c
    window?.makeKeyAndVisible()
    return true
  }
}

ViewController.swift:

import UIKit

class ViewController: UIViewController {

  override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return .all
  }

  override var shouldAutorotate: Bool {
    return true
  }

  override func viewDidLoad() {
    super.viewDidLoad()

    view.backgroundColor = .purple

    let redView = UIView()
    redView.backgroundColor = .red
    redView.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
    view.addSubview(redView)
  }
}

Info.plist(节选):

    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
        <string>UIInterfaceOrientationPortraitUpsideDown</string>
        <string>UIInterfaceOrientationPortrait</string>
    </array>

2 个答案:

答案 0 :(得分:2)

这是有意为之的,没有触摸ID的较新iPhone不具有颠倒功能。如果您在iPhone 8上运行示例,它将自动旋转。

https://forums.developer.apple.com/message/268015中,苹果员工说:

  

“这是设计使然。我们将在将来的版本中更新文档以反映这一点。”

官员Apple documentation说:

  

系统将视图控制器的支持方向与应用程序支持的方向(由Info.plist文件或应用程序委托的application:supportedInterfaceOrientationsForWindow:方法确定)和设备的支持方向相交,以确定是否旋转。 例如,iPhone X不支持UIInterfaceOrientationPortraitUpsideDown方向

另外,请参见Apple Visual Design Orientation

  

仅在纵向模式下运行的应用程序应在用户将设备旋转180度时将其内容旋转180度。在iPhone X上除外,iPhone X不支持上下颠倒的纵向模式。 < / p>

答案 1 :(得分:0)

这取决于您使用的Iphone。无论您做什么,使用faceID的较新Iphone都不支持上下颠倒旋转。有关如何在旧版iPhone上将屏幕上下翻转的信息,请查看以下文章:Upside down and Rotating Iphones