【问题标题】:ios-to maintain screen orientation of a particular active ViewController after resuming from background stateios-从后台状态恢复后保持特定活动视图控制器的屏幕方向
【发布时间】:2018-08-03 08:54:08
【问题描述】:

对于我的应用程序中的图形视图屏幕,方向必须是横向模式,而对于其他屏幕,方向是纵向模式。

问题是当图表视图在活动屏幕上并且应用程序进入后台时。
当应用程序返回活动状态时,图表的方向会更改为纵向模式,这是不可取的。
有什么办法可以保留图形视图的方向?
注意:图形视图控制器不与任何导航控制器连接,并在按钮单击事件后以编程方式调用。

提前致谢。

【问题讨论】:

    标签: ios swift uiviewcontroller appdelegate


    【解决方案1】:

    有一种方法可以锁定方向。或许它会解决你的问题。

    我找到这个答案是为了让事情变得更容易,而不是在这里再写一次。

    解决方案:link

    希望对你有帮助!

    【讨论】:

    • 感谢@tungfam 的回复,链接中给出的解决方案并不能解决我的问题。
    【解决方案2】:

    这里有一些先决条件。

    首先我们选择应用程序所需的方向:

    第二我们需要在info.plist中添加一些参数,检查Supported Interface Orientations是否包含第一步选择的方向。



    现在进入编码部分: 在 Appdelegate 类中,将此代码添加到以下函数:
    func applicationDidBecomeActive(_ application: UIApplication)

     //case 1:  for view controllers not part UINavigationController in your.storyboard
        if(self.window?.rootViewController?.presentedViewController is GraphViewController){
            let value = UIInterfaceOrientation.landscapeLeft.rawValue
            UIDevice.current.setValue(value, forKey: "orientation")
        }
    //or
    //case 2: for view controllers which are part UINavigationController in your.storyboard
            let currentVC = self.window?.rootViewController as? UINavigationController
            if(currentVC?.viewControllers.last is GraphViewController){
                let value = UIInterfaceOrientation.landscapeLeft.rawValue
                UIDevice.current.setValue(value, forKey: "orientation")
            }
    

    就是这样,现在在运行应用程序之后,如果应用程序被发送到后台(当 GraphViewcontroller 在活动屏幕上时)通过按下主页按钮然后通过从应用程序托盘中选择返回到应用程序, GraphViewcontroller 将保留方向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      相关资源
      最近更新 更多