在快速

时间:2016-05-15 16:52:58

标签: ios swift locking orientation viewcontroller

我是Swift的新手,我在viewController中将方向锁定为肖像时遇到问题。实际上我已经使用我的自定义导航控制器中的代码锁定了它

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    if (self.visibleViewController is ViewController)
    {
        return UIInterfaceOrientationMask.Portrait
    }
    return .All
}

一切正常,ViewController被锁定为肖像。问题是在横向模式下从另一个控制器返回此控制器时。 如果我在横向上返回ViewController(从NextViewController返回),那么ViewController将出现在横向中。有什么建议吗?

3 个答案:

答案 0 :(得分:7)

在swift 3中,这个解决方案可行

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    if self.window?.rootViewController?.presentedViewController is LockedViewController {
        return UIInterfaceOrientationMask.portrait
    } else {
        return UIInterfaceOrientationMask.all
    }
}

更改LockedViewController以匹配您想要锁定的控制器。

答案 1 :(得分:0)

您可以覆盖以下方法

 override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.Portrait
  }
  override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
    return UIInterfaceOrientation.Portrait
  }

然后,在viewDidLoad中,通过添加以下代码强制方向

UIDevice.currentDevice().setValue(UIInterfaceOrientation.Portrait.rawValue, forKey: "orientation")

答案 2 :(得分:0)

对于swift3.0

限制不同视图的不同方向您需要执行以下操作:

在App委托文件中:

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

        if self.window?.rootViewController?.presentedViewController is OtherViewController {

            return UIInterfaceOrientationMask.All;

        } else {
            return UIInterfaceOrientationMask.Portrait;
        }

    }