仅在 LandscapeLeft 和 LandscapeRight 之间旋转

Posted

技术标签:

【中文标题】仅在 LandscapeLeft 和 LandscapeRight 之间旋转【英文标题】:Rotate only between landscapeLeft and landscapeRight 【发布时间】:2017-05-03 05:58:40 【问题描述】:

我在横向模式下播放视频。当设备方向改变时,视图只会在 LandscapeLeft 和 LandscapeRight 之间旋转。也就是说播放电影时没有人像模式。更何况除了电影视图,其他视图都是纵向模式,所以应用配置是纵向的。如何使电影视图仅在横向模式下旋转。

这是我的代码的一部分。

应用程序代理,

internal var shouldRotate = false

func application(_ application: UIApplication,
                 supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask 
    return shouldRotate ? .allButUpsideDown : .portrait

电影视图控制器,

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.shouldRotate = true // or false to disable rotation
    let value = UIInterfaceOrientation.landscapeLeft.rawValue
    UIDevice.current.setValue(value, forKey: "orientation")

目前的问题是当方向改变时电影视图可能是纵向的。

【问题讨论】:

【参考方案1】:

.allButUpsideDown 更改为.landscape

func application(_ application: UIApplication,
                 supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask 
    return shouldRotate ? .landscape : .portrait

【讨论】:

以上是关于仅在 LandscapeLeft 和 LandscapeRight 之间旋转的主要内容,如果未能解决你的问题,请参考以下文章

当设备在 LandscapeLeft 中时,iOS 应用程序在 LandscapeRight 中启动

如何在 AVPlayer 中强制横向模式?

如何为 iOS 强制颤动设备方向

UIButtons 在向右旋转时起作用,但在向左旋转时不起作用。嗯?

Android - 相机预览是横向的

Fifth-自动旋转和自动调整大小