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

iPad定向程序无法运行

吴鸿禧
2023-03-14

我对iPad上的方向有一个问题。我禁用了iPhone上的方向,但我可以在某些特定的控制器上以编程方式更改它。但在iPad上我不能。我不知道为什么,尽管我在这个网站上搜索,一些开发人员编写答案以检查UI必需FullScreene,我这样做了。但它禁用了所有屏幕上的方向。有没有办法在iPad上的特定控制器上提供更改方向的能力?

下面的代码我用来改变iPad的方向,但它不起作用。

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

提前感谢

共有1个答案

柳英豪
2023-03-14

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

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

from正在调用AppServer ate

如果您将其设置为仅返回UIInterfaceOrientationMask。纵向您将永远看不到过渡。

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

手机从纵向向左旋转景观的示例

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
}
 类似资料:
  • 我创建了一个全新的、单视图的iOS通用Swift应用程序。然后,我在app设置中取消了“景观左”和“景观右”的勾选。我在我的iPhone上运行它,万岁,无论我怎么旋转手机,它都保持在人像模式。然后我在我的iPad上运行它,它旋转到任何东西。甚至一开始就没有启用的倒置人像模式?只有我一个人经历过吗?当我用命令+箭头键旋转时,这种情况在iPad模拟器中也会发生。 我还尝试将以下内容添加到ViewCon

  • 问题内容: 这是简单的go应用程序。如果运行以下代码,则会出现“运行:无法运行非主程序包”错误。 要解决此问题,我只需要将该包命名为即可。但是我不明白为什么我需要这样做。我应该能够随心所欲地命名包裹。 另一个问题,我知道主要功能是程序的入口点,您需要它。否则它将无法正常工作。但是我看到一些没有主要功能的代码仍然可以使用。 单击此链接,页面底部的示例未使用包main和main函数,它仍然有效。只是好

  • 问题内容: 尽管 通过终端执行相同的命令时没有问题 , 但 我却遇到了类似执行以下命令时的异常情况 。 我需要执行并返回以下命令的输出: 这是使用类执行命令的方法: 问题答案: Runtime.exec不使用外壳程序(例如);它将命令直接传递到操作系统。这意味着将不会理解通配符(例如)和管道(),因为(像所有Unix命令一样)不会对这些字符进行任何解析。您需要使用类似 或者,如果出于某些奇怪的原因

  • 我尝试在IntelliJ中使用play/debug按钮运行或调试程序,我得到错误:找不到或加载主类 我已经从 Spring 启动程序中做了很多事情找不到主类不起作用。但是当我使用命令行并运行时:mvn spring-boot:run 应用程序正在运行并且工作正常。 我的主要方法如下: 我只想通过IntelliJ运行和调试。

  • 我知道甚至这个问题已经被提出了几次,但没有找到解决这个问题的方法。我使用的编译命令:。我使用的运行命令: 错误:

  • 我一直试图使用JDBC在JAVA中创建一个简单的数据库应用程序。到目前为止,我所有的尝试都没有成功,甚至在加载驱动程序。了解我是Java新手,刚刚开始学习。以下是我的步骤: 程序总是给出这个例外: 线程“main”Java.lang.ClassNotFoundException:com.microsoft.sqlServer.jdbc.sqlServerDriver在Java.net.URLCla