当前位置: 首页 > 知识库问答 >
问题:

iOS 13中的自动旋转错误

公孙巴英
2023-03-14

iOS 13/13.1自动旋转的行为似乎与iOS 12不同。例如,“我的应用”允许用户在设置中将界面方向锁定为纵向或横向模式。

>

  • 如果我在设备上有纵向旋转锁定并返回。横向在supportedInterfaceOrientations中,界面保持纵向模式,直到我在设备上禁用纵向锁定方向。iOS 12似乎并非如此。事实上,在iOS 13中甚至没有调用supportedInterfaceOrientations!

    UIViewController。attemptRotationToDeviceOrientation()在这种情况下也不起作用。

    问题的根源是我在应用程序初始化时暂时将应自动旋转返回为false,当所有内容都初始化时,我调用UIViewController.attemptRotationToDeviceOriection()来触发自动旋转。它在iOS12中触发自动旋转,但在iOS13.1中不起作用。

    看起来可能是iOS 13.1中的一个bug。如何强制触发自转?

    编辑:看起来iOS 12.4.1也会忽略UIViewController。attemptRotationToDeviceOrientation()。iOS 12.4.1中的自动旋转有问题

    明确地说,这就是我想要的:

    即使在iPhone设置了纵向锁定,如果需要,我希望我的界面自动旋转到横向模式,

    B. UIViewController.attemptRotationToDeviceOriection()替代,在所有情况下触发自动旋转。

  • 共有3个答案

    后阳炎
    2023-03-14

    回答其他面临这个问题的人,这对我来说很有用。转到项目设置常规

    然后在viewddLoad块后粘贴以下代码:

    // Forbid autorotate
    override open var shouldAutorotate: Bool {
       return false
    }
    
    // Specify the orientation
    override open var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .landscape
    }
    
    羊毅庵
    2023-03-14

    试试这个,看看这是否是你正在寻找的东西:

    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
    
        }
    
        @IBAction func btnLandscapeClicked(_ sender: Any) {
            let value = UIInterfaceOrientation.landscapeLeft.rawValue
            UIDevice.current.setValue(value, forKey: "orientation")
        }
    
        @IBAction func btnPortraitClicked(_ sender: Any) {
            let value = UIInterfaceOrientation.portrait.rawValue
            UIDevice.current.setValue(value, forKey: "orientation")
        }
    
    }
    
    extension UINavigationController {
    
        override open var shouldAutorotate: Bool {
            get {
                if let visibleVC = visibleViewController {
                    return visibleVC.shouldAutorotate
                }
                return super.shouldAutorotate
            }
        }
    
        override open var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation{
            get {
                if let visibleVC = visibleViewController {
                    return visibleVC.preferredInterfaceOrientationForPresentation
                }
                return super.preferredInterfaceOrientationForPresentation
            }
        }
    
        override open var supportedInterfaceOrientations: UIInterfaceOrientationMask{
            get {
                if let visibleVC = visibleViewController {
                    return visibleVC.supportedInterfaceOrientations
                }
                return super.supportedInterfaceOrientations
            }
        }}
    
    邹俊豪
    2023-03-14

    从iOS12.4.1开始,视图控制器应设置为全屏以尊重自动旋转方向。

    let vc = UIViewController()
    vc.modalPresentationStyle = .fullScreen
    self.present(vc, animated: true, completion: nil)
    
     类似资料:
    • 使地球自动旋转,并控制旋转速率。地球的自动旋转功能在默认情况下是关闭的,如果启动旋转功能,默认的旋转速率是1。 // 启用自动旋转功能,将转速设置为1(同时1也是默认的转速) controller.setAutoRotation( true, 1 ); // 如果之前开启了自动旋转功能,可以用这种方式将其关闭 controller.setAutoRotation( false );

    • 我们有Hadoop集群版本2.6.4,而指标收集器安装在我们的一台Linux服务器上 在/var/log/ambari-metrics-collector下,我们有去年7月的gc.log文件,我们希望自动删除循环的gc.log文件 从ambari gui中的Advanced ams-hbase-env中,我们看到以下内容: 我们尝试在HBASE_MASTER_OPTS或HBASE_REGIONSE

    • 我的应用程序支持所有方向,除了肖像向上向下。在我的视图层次结构中,我有一个AVCaptureVideoPreviewLayer作为俯视图中的一个子层,即UIImageView。然后,在视图层次结构的下方是几个显示控件的覆盖视图。 覆盖视图可以在方向改变的情况下正常工作,但我不知道如何使用这个AVCaptureVideoPreviewLayer。我希望它的行为像照相机应用程序一样,这样preview

    • 我正在开发一款ios应用程序,它必须在横向和纵向两种模式下都能工作,但有一种视图应该始终在横向模式下。因此,我有: 如果我在横向模式下使用我的应用程序,并到达此视图并旋转设备(iPad),则调用此方法并返回false,因此界面不会旋转,好东西。 但是如果我在纵向视图中,并且到达该视图,则调用此方法并返回false,但是方向不会改变。在这种情况下,如果我将设备旋转到横向,该方法将返回true,接口将

    • 问题内容: 无法使此动画图像正常工作,它应该进行360度旋转。 我猜下面的CSS有点问题,因为它保持静止。 问题答案: 这是 正确的动画CSS: 有关代码的一些注意事项: 您已将关键帧嵌套在规则中,这是不正确的 不适用于绝对定位的元素 看看caniuse:IE10不需要前缀

    • 问题内容: 我已经回顾了很多演示,并且不知道为什么我无法使CSS3自旋起作用。我正在使用最新的稳定版Chrome。 问题答案: 要使用CSS3动画,您还必须定义实际的动画关键帧( 您将其命名为) 配置了动画的时间后,您需要定义动画的外观。这是通过使用规则建立两个或更多关键帧来完成的。每个关键帧描述动画元素在动画序列中给定时间应如何呈现。