我有一个UIViewController,我想在不同的场景中禁用或启用屏幕旋转

例子:

if flag {
   rotateDevice = false
}
else {
   rotateDevice = true
}

我该怎么做?

推荐答案

我有答案.

更新为swift 3/4

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

self.restrictRotation是一个自定义参数.

How to use:

In Appdelegate:

 var restrictRotation:UIInterfaceOrientationMask = .portrait

In ViewController:

调用ViewDidLoad或viewWillAppear方法时.我们会这样改变:

(UIApplication.shared.delegate as! AppDelegate).restrictRotation = .all 

然后将调用AppDelegate上的此方法.

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

Swift相关问答推荐

为什么在Swift属性Wrapper中需要类型注释?

变量捕获:变量在函数闭包中的行为

避免嵌套导航TabView

格式化单位和度量值.为什么从符号初始化的单位不能产生与静态初始化相同的结果

在SwiftUI中,我如何确保带有符号的单词不会被拆分为两行?

使 tabview 垂直将视图移动到右侧 swift ui

为什么无法在 Swift 中使用AVFoundation扫描 QRCode

memcpy 复制带偏移量的数组

String(validatingUTF8:) 和 String(utf8String:) 之间有区别吗?

如何为等待函数调用添加超时

使用 RxSwift 围绕 async/await 方法创建 Observable

并发执行代码中捕获的 var 的变异

是否可以使任何协议符合 Codable?

SwiftUI:调用以编程方式创建的视图的函数

在视图中设置所有变量

如何在不阻塞 UI 更新的情况下使用 Swift Concurrency 在后台执行 CPU 密集型任务?

swift 如何从 Int 转换?到字符串

如何为多个类 Swift 进行扩展

为什么我可以转换为 NSManagedObject 但不能转换为我的实体类型?

如何在 Swift 中重写 setter