【问题标题】:why is my view still presented in landscape?为什么我的视图仍然以横向显示?
【发布时间】:2015-09-22 02:56:26
【问题描述】:

我的视图由导航控制器控制,因此我将导航控制器支持的方向设置为显式纵向和纵向UpSideDown,这样可以正常工作,但是如果调用视图时前一个视图处于横向,它将呈现本身处于横向并保持横向直到设备旋转..我该如何防止这种情况?

这是我的代码:

class EditProfileViewController: UIViewController, UINavigationControllerDelegate

override func viewDidLoad() {
        super.viewDidLoad()

        navigationController?.delegate = self
}

func navigationControllerSupportedInterfaceOrientations(navigationController: UINavigationController) -> UIInterfaceOrientationMask {

    return [UIInterfaceOrientationMask.Portrait, UIInterfaceOrientationMask.PortraitUpsideDown]
}

我以为上一行会将视图永久锁定为纵向,我该怎么做?

【问题讨论】:

    标签: ios swift uinavigationcontroller uiinterfaceorientation


    【解决方案1】:

    您可以在关闭它之前将方向更改回纵向:

    UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")
    
    dismiss(animated: true) { _ in
        print("dismissed in Portrait mode")
    }
    

    【讨论】:

    • 我应该在哪里写这段代码来影响navigationController?
    • 在关闭可能处于横向模式的 viewController 之前
    • 但问题是,我想在视图在这里时影响方向,而不是在它被解雇之前。如果设备在横向时,你能提供一个将方向设置为纵向的答案吗?提出..
    • 您可以将此代码添加到 viewDidLoad 但相信我最好在关闭视图之前将视图旋转回纵向。您还可以创建自定义导航控制器并覆盖 func shouldAutorotate() -> Bool { return false }
    • 只需检查 viewDidLoad 中的方向,如果landScape 将其强制为纵向
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多