iOS整体竖屏 个别页面横屏

个别页面设置横屏时出现了Bug,这里就我遇到的情况做个说明。

iOS竖屏状态下present一个横屏的viewController(继承BaseViewController)出现bug,每次app第一次启动后,会出现如附件中的现象,本应该横屏全屏的界面,结果成了竖屏只有上半边的情况,下半边全黑,再次进入这个页面就不会再出现。

图1.png

这时我在【General】【Device Orientation】中只选择了【Portrait】


图2.png

在需要横屏的ViewController中添加代码:

override var shouldAutorotate: Bool {
        return false
    }

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .landscapeRight
    }
    
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
        return .landscapeRight
    }
    

解决办法

在【General】【Device Orientation】中选择了【Portrait】和【Landscape Right】,只在AppDelegate中设置

var allowRotation: Bool = false //是否允许转向

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
        if self.allowRotation {
            return .landscapeRight
        } else {
            return .portrait
        }
    }

然后在需要设置横屏的Controller 的 viewDidLoad 函数中设置

if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
            appDelegate.allowRotation = true
        }

在点击返回按钮时重新设置上面的值

if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
            appDelegate.allowRotation = false
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • APP只支持竖屏(Portrait)模式 在project navigator中选择对应的工程,在选中target...
    金辉iOS阅读 8,141评论 6 7
  • github Demo 链接 0. 横屏应用领域 游戏 视频播放、直播 展示内容较多且有较多细节的,VR、全景、摄...
    牛哥小小阅读 9,050评论 5 8
  • 以下是复制别人的文章过来的,目的是保留下这个方法,便于今后查阅使用,该文章不会用于任何商业用途,该文章的出处:ht...
    鸿蒙一笑万物开阅读 12,757评论 0 3
  • 1、UIDeviceOrientation 设备的物理方向 简介UIDeviceOrientation即我们手持的...
    MrJ的杂货铺阅读 28,057评论 8 75
  • “我喜欢上了一个女孩,我想追她。”当收到周跃这条微信的时候,我惊呆了。 “真的?”我还是觉得有点不可思议。 “嗯。...
    杨茗辞阅读 4,423评论 11 13

友情链接更多精彩内容