美文网首页
iOS开发--屏幕旋转的问题

iOS开发--屏幕旋转的问题

作者: 一线码农 | 来源:发表于2017-03-05 23:26 被阅读60次

    首先,在iOS中展示界面的方式有两种,push和modal
    那么,在app中如果想要实现随心所欲的屏幕旋转,就要分两种情况来看
    1,使用push,也就是说我们的控制器要嵌套在一个UINavigationController下来展示,我们需要以个继承了UINavigationController的子类来重写一下三个方法

    - (BOOL)shouldAutorotate{
        return self.topViewController.shouldAutorotate;
    }
    
    - (UIInterfaceOrientationMask)supportedInterfaceOrientations{
        return self.topViewController.supportedInterfaceOrientations;
    }
    
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
        return self.topViewController.preferredInterfaceOrientationForPresentation;
    }
    

    然后在相应的控制器里也要重写着三个方法,例如这样

    - (BOOL)shouldAutorotate{
        return self.autoRotate;
    }
    
    - (UIInterfaceOrientationMask)supportedInterfaceOrientations{
        return self.mask;
    }
    
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
        return self.orientation;
    }
    

    这里重写的目的是为了真正控制当前的屏幕方向
    重写这三个方法也是做一个铺垫,真正发挥改变屏幕方向的代码是

        [[UIDevice currentDevice] setValue:@(UIDeviceOrientationLandscapeLeft) forKey:@"orientation"];
    

    只有重写了前面的三个方法,上面的代码才会起作用
    以上的步骤的确可以实现屏幕旋转,但是无论是modal还是push 我都发现还存在问题,modal 的情况下会偶发控制器的view 旋转了但是屏幕的方向没有变,push 的问题发生打概率更大一些,就是当从A到B变横屏,然后从B到C变竖屏,再从C返回B能够变回横屏,然后从B返回A也能变回竖屏,这时候再从Apush到B则不能变横屏,这是目前遇到的问题,记录下来,暂时留在这里,明天继续解决。

    相关文章

      网友评论

          本文标题:iOS开发--屏幕旋转的问题

          本文链接:https://www.haomeiwen.com/subject/mxlpvttx.html