如何在纵向模式下支持 iPad 的 180 度变体?

Posted

技术标签:

【中文标题】如何在纵向模式下支持 iPad 的 180 度变体?【英文标题】:How to support 180 degree variant for iPad in portrait mode? 【发布时间】:2016-11-27 09:41:37 【问题描述】:

我正在设计一个通用应用程序,我希望只支持 iPhone 和 iPad 的纵向。但我需要 iPad 支持常规和倒置纵向。

所以我将info.plist 中的 iPhone 和 iPad 支持的界面方向设置为 Portrait (top home button)Portrait (bottom home button).

关注AppDeleagte.swift

var shouldSupportAllOrientation = false

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask 
    if (shouldSupportAllOrientation == true)
        return UIInterfaceOrientationMask.all
    
    return UIInterfaceOrientationMask.portrait

关注ViewController.swift

override func viewWillAppear(_ animated: Bool) 
        let appdelegate = UIApplication.shared.delegate as! AppDelegate
        appdelegate.shouldSupportAllOrientation = false

    let value = UIInterfaceOrientation.portraitUpsideDown.rawValue
    UIDevice.current.setValue(value, forKey: "orientation")

当我在模拟器中将我的 iPad 倒置旋转时,它仍然是倒置的,并且没有旋转 180 度。我哪里错了?

【问题讨论】:

【参考方案1】:

您没有提及如何为项目配置部署信息。默认情况下,通用项目的“倒置”选项未选中,您需要选择此选项以获得所需的方向

【讨论】:

【参考方案2】:

我可以做到这一点

在 AppDeleagte.swift 之后

var shouldSupportAllOrientation = false

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask 
    if (shouldSupportAllOrientation == true)
        return UIInterfaceOrientationMask.all
    
  return [UIInterfaceOrientationMask.portrait, UIInterfaceOrientationMask.portraitUpsideDown]

在 ViewController.swift 中跟进

override func viewWillAppear(_ animated: Bool) 
        let appdelegate = UIApplication.shared.delegate as! AppDelegate
        appdelegate.shouldSupportAllOrientation = false

【讨论】:

以上是关于如何在纵向模式下支持 iPad 的 180 度变体?的主要内容,如果未能解决你的问题,请参考以下文章

MFMailComposeViewController 在 iPad 上强制纵向

iPad:如何根据方向(横向/纵向)显示不同的屏幕

如何防止方向改变180度

iPad 纵向模式下的拆分视图 - 弹出按钮标题

标题在 iPad 纵向模式下溢出内容

模态视图的 Ipad 方向问题