iPad方向以编程方式不起作用

Posted

技术标签:

【中文标题】iPad方向以编程方式不起作用【英文标题】:iPad orientation programmatically not working 【发布时间】:2020-06-11 20:33:36 【问题描述】:

我对 iPad 上的方向有疑问。 我在 iPhone 上禁用了方向,但我可以在某些特定控制器上以编程方式更改它。 但在 iPad 上我不能。我不知道为什么,尽管我在这个网站上进行了搜索,一些开发人员写了答案来检查UIRequiresFullScreene,我做到了。 但它会禁用所有屏幕上的方向。 有什么方法可以改变 iPad 上特定控制器的方向吗?

以下代码我用来更改 iPad 方向,但它不起作用。

UIDevice.current.setValue(UIInterfaceOrientation.landscapeLeft.rawValue, forKey: "orientation")

提前感谢

【问题讨论】:

这能回答你的问题吗? Force landscape mode in one ViewController using Swift 【参考方案1】:

当您以编程方式设置设备的方向时。执行方向动画功能

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask 

正在调用来自AppDelegate

如果您将其设置为仅返回 UIInterfaceOrientationMask.portrait,您将永远看不到转换。

我个人也有这类问题,为了解决这个问题,我必须以编程方式强制手机旋转到当前方向,然后再旋转到想要的方向。

手机从纵向旋转横向的示例

func setOrientationToLandScapeOnly() 
    appDelegate.shouldForceLandscapeOnly = true
    appDelegate.shouldForcePortraitOnly = false
    if UIDevice.current.userInterfaceIdiom == .phone 
        switch UIApplication.shared.statusBarOrientation 
            case .landscapeLeft, .landscapeRight:
                return
            default:
                APIOrientationHandler.shared.setDeviceValueForOrientation(UIInterfaceOrientation.portrait.rawValue)
                APIOrientationHandler.shared.setDeviceValueForOrientation(UIInterfaceOrientation.landscapeLeft.rawValue)
                return
        
    

AppDelegate.swift里面

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask 

    if shouldForcePortraitOnly 
        return UIInterfaceOrientationMask.portrait
    

    if shouldForceLandscapeOnly 
        return UIInterfaceOrientationMask.landscape
    

    if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad) 
        return UIInterfaceOrientationMask.landscape
    

    return UIInterfaceOrientationMask.portrait

【讨论】:

你说得对,谢谢,但还必须从项目设置中取消选中横向,只检查纵向

以上是关于iPad方向以编程方式不起作用的主要内容,如果未能解决你的问题,请参考以下文章

ios UIViewController以编程方式定位按钮不起作用

以编程方式从 CollectionView 单元推送 viewController 不起作用 - swift

检测 iphone/ipad 方向不起作用

为啥 iPad 默认启动图像方向不起作用(iOS 5)?

锁定方向在 ipad ios 8 swift xcode 6.2 上不起作用

中心视图不起作用