【问题标题】:Enable portrait and landscape for one view controller and only portrait for other view controllers in swift?为一个视图控制器启用纵向和横向,并为其他视图控制器快速启用纵向?
【发布时间】:2015-10-30 20:29:25
【问题描述】:

我的应用中有 10 个视图控制器,我希望只有一个视图控制器可以在纵向和横向模式下查看,其余的只能在纵向模式下查看。 注意:我正在使用 UINavigationController。 任何帮助表示赞赏!

【问题讨论】:

标签: ios swift landscape-portrait


【解决方案1】:

我遇到了同样的问题,但找到了解决方案:

首先,在基本设置中为您的应用启用横向模式。然后修改你的 AppDelegate:

internal var shouldRotate = false

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

    return shouldRotate ? .allButUpsideDown : .portrait

}

对于每个应允许横向模式的控制器,将以下代码添加到 viewDidLoad() :

let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.shouldRotate = true

这允许整个应用程序以横向模式显示。但它应该只在这个控制器中,所以在 viewWillDissappear() 中添加以下代码,将 AppDelegate 中的 shouldRotate var 设置为 false:

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(true)

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.shouldRotate = false

}

【讨论】:

  • 如果第一个代码sn-p转到ViewWillAppear会更合适。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 2013-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多