如何禁用collectionView swift上的landscape?

时间:2017-12-25 09:41:36

标签: swift uicollectionview

我的应用程序支持横向和纵向,但我想在我的一个collectionViews和viewControllers上禁用横向旋转。我的代码适用于viewController,但不适用于collectionView。有什么建议吗?

    override var shouldAutorotate: Bool{
    return false
}

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return .portrait
}

1 个答案:

答案 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