将 iPad 锁定为横向
Posted
技术标签:
【中文标题】将 iPad 锁定为横向【英文标题】:lock iPad to landscape orientation 【发布时间】:2015-08-02 13:34:11 【问题描述】:我有一个游戏,我只想在横向模式下玩。这适用于 iPhone,但不适用于 iPad。我想我可以通过发布同一应用程序的 2 个版本来解决这个问题,一个用于 iPhone,一个用于 iPad。但是,在进一步查看后,我发现 iPhone 应用程序需要 iPad 准备好?我看到这个答案表明可以锁定 iPad 应用程序的方向:
Lock Ipad App in Landscape mode
这在 xCode 和 swift 的更高版本中是否仍然可能,如果可以,如何?
【问题讨论】:
【参考方案1】:这是你可以做的。在每个 ViewController 类的 viewDidLoad 方法中插入此代码。
if UIDevice.currentDevice().userInterfaceIdiom == .Pad
// this code will be executed if the device is an iPad
override func supportedInterfaceOrientations() -> Int
return UIInterfaceOrientation.LandscapeLeft.rawValue
override func shouldAutorotate() -> Bool
return false
接下来会发生什么
-
执行 viewDidLoad 函数并计算 if 语句
if 语句的条件为真,因此应该执行块内的语句
第一个覆盖函数会将方向设置为横向左。您可以将其更改为 Landscaperight
第二个函数将锁定方向旋转功能
注意:我更喜欢你将所有的视图控制器嵌入到导航控制器中,并将这个导航控制器链接到一个类,然后在这个类的 viewDidLoad 方法中编写我给你的代码。这将为导航控制器内的所有视图进行配置,而不是在每个类中输入它们
【讨论】:
感谢您的建议 :) 刚刚将它添加到我的代码中,所有视图都完美锁定为横向,除了launchScreen.xib。我如何为此访问视图控制器?此外,当游戏开始时,它不会在第一个场景中设置为横向,直到我进入下一个场景,但是,如果我在没有关闭模拟器的情况下回到那个场景,它就会被设置为横向。 我不知道launchscreen.xib,但要在游戏启动后立即设置风景,请使用viewWillLoad方法而不是viewWillLoad。请告诉我它是否有效 我已经尝试过 viewWillLoad 和 viewWillAppear,但没有成功。我会进一步研究。 已修复,我使用您提供的代码强制 iPad,并检查了我的 p.list.. 结果支持的界面方向数组包含纵向选项,所以我删除了它们并解决了问题,两个 iPhone和 iPad 可以锁定。更多信息在这里:developer.apple.com/library/ios/documentation/iPhone/Conceptual/…【参考方案2】:如果必须锁定所有屏幕以及 iPhone 和 iPad 的方向,您可以直接在 Xcode 中轻松实现。
进入 Targets>General>Deployment Info 并选择所需的设备方向。请检查屏幕截图。
这样你的 Launch Image 不会有任何问题
【讨论】:
部署信息适用于 iPhone 但不适用于 iPad,通常无法锁定 iPad 方向。 @kellclx 你确定吗?让我再检查一遍,然后再回来 请参阅我上面的评论,当 p.list 更改以删除保留在“支持的界面方向”中的纵向选项时,即使您更改了部署信息,部署信息仍然有效。感谢您的帮助 :) 我在这里找到了有关 p.list 的信息:developer.apple.com/library/ios/documentation/iPhone/Conceptual/… 这确实有效。 如果它是“通用”应用程序,您可以为“设备”选择 iPad,然后设置所需的旋转。对 iPhone 执行相同操作,然后将其设置回“通用”! 感谢@LinusGeffarth。意识到这一点并不容易!【参考方案3】:为什么不直接从“支持的界面方向(iPad)”下的 info.plist 中删除您不需要的方向
【讨论】:
【参考方案4】:我相信这可以在 xcode 文件导航器顶部的蓝色文件中的部署信息中完成
【讨论】:
以上是关于将 iPad 锁定为横向的主要内容,如果未能解决你的问题,请参考以下文章
iPad应用程序首先进入纵向模式,然后在解锁屏幕后进入横向模式,在锁定时处于横向模式