使用多个ViewController来处理方向

时间:2019-09-03 11:28:25

标签: ios swift iphone xcode orientation

一些快速问题,我在堆栈上有5 VC。当我使用第二个VC时,如果我旋转到风景,而当我移动到1st VC时,我的布局将完全折叠。

在第二个VC中,我添加了viewWillTransition,并且我是invalidateLayout的表视图。如果我在第一个屏幕viewWillAppear中添加tableview.reloaddata(),那就很好。

但是请考虑如果我在堆栈上有5个VC,则无法在所有VC中编写代码。有没有更好的方法来处理它。

1 个答案:

答案 0 :(得分:5)

在您的应用程序委托中添加...。

    var orientationLock = UIInterfaceOrientationMask.all

    func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
        return self.orientationLock
    }
    struct AppUtility {
        static func lockOrientation(_ orientation: UIInterfaceOrientationMask) {
            if let delegate = UIApplication.shared.delegate as? AppDelegate {
                delegate.orientationLock = orientation
            }
        }

        static func lockOrientation(_ orientation: UIInterfaceOrientationMask, andRotateTo rotateOrientation:UIInterfaceOrientation) {
            self.lockOrientation(orientation)
            UIDevice.current.setValue(rotateOrientation.rawValue, forKey: "orientation")
        }
    }

从任何这样的视图控制器中使用它...

AppDelegate.AppUtility.lockOrientation(UIInterfaceOrientationMask.portrait, andRotateTo: UIInterfaceOrientation.portrait)