我的应用程序支持横向和纵向,但我想在我的一个collectionViews和viewControllers上禁用横向旋转。我的代码适用于viewController,但不适用于collectionView。有什么建议吗?
override var shouldAutorotate: Bool{
return false
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
答案 0 :(得分:1)
我总是使用这个
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return .portrait
}
此外,还没有转动UICollectionView
,这是你的ViewController
就像在汽车中一样,司机会处理整辆车
编辑:
它可能是正确的代码,但不在右侧的ViewController中。对于 如果View Controller嵌入在一个 UINavigationController,导航控制器仍然可以旋转, 导致View Controller仍然旋转。这真的取决于你 具体情况。
假设你的ViewController
嵌入到navigationController中,你最好的选择是继承UINavigationController
import UIKit
class CustomNavigationController: UINavigationController {
override func shouldAutorotate() -> Bool {
if !viewControllers.isEmpty {
// Check if this ViewController is the one you want to disable roration on
if topViewController!.isKindOf(ViewController) { //ViewController is the name of the topmost viewcontroller
// If true return false to disable it
return false
}
}
// Else normal rotation enabled
return true
}
}
如果要在整个导航控制器中禁用自动旋转,请删除if条件并始终返回false