如何在iPad应用程序上禁用横向方向?

59

我创建了一个全新的、单视图的iOS通用Swift应用程序。然后,我在应用程序设置中取消选中“左横向”和“右横向”。我在我的iPhone上运行它,太好了,无论我如何旋转手机,它都保持竖屏模式。然后我在iPad上运行它,它可以旋转到任何角度,甚至是倒立的竖屏模式,这一开始并没有启用?我是唯一遇到这个问题的吗?当我使用command+箭头键旋转时,在iPad模拟器中也会发生这种情况。

我还尝试将以下内容添加到ViewController.swift中,但结果相同。

override func shouldAutorotate() -> Bool {
    return false
}

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.Portrait
}

有没有办法在iPad上真正禁用从肖像模式旋转?


10
制作通用应用程序时,iPad和iPhone的方向设置是分开的。请再次检查是否也已为iPad禁用了该设置。 - Adil Soomro
不要这样做!这对于实际使用iPad的用户来说非常烦人!其中许多人,包括我在内,从不在纵向模式下使用设备,特别是当键盘连接时! - Megan Caithlyn
10个回答

95

它完美地工作,无需编写代码。

首先选择项目,然后进入第一个选项卡“常规”。

现在在部署信息部分中选择“设备”选项是iPad,然后下拉选择设备方向。取消勾选横向左侧、右侧选项。

完成后将设备重新选择为通用,并将设备方向设置为纵向模式,并取消勾选横向模式。

现在在iPad上运行您的应用程序并检查这些内容。我希望问题已经解决了。


1
请确保在 iPad 上选择“需要全屏”框,否则您的应用将无法通过验证。 - JustAnotherGuy

66

在Info.plist中,iPhone和iPad支持的屏幕方向有不同的条目。

  • iPhone = UISupportedInterfaceOrientations
  • iPad = UISupportedInterfaceOrientations~ipad

您需要修改Info.plist并删除UISupportedInterfaceOrientations~ipad键的横屏条目。


7
这是最好的答案。我在“通用设置”中选择了“肖像模式”,但在iPad上应用程序会旋转,而在iPhone上不会。更改 Info.plist 文件解决了问题。我想知道为什么要更改两个设置才能完成一个任务! - zeuschyant8
运行得很好!谢谢! - EK Chhuon
当我删除并尝试将应用提交到App Store时,应用验证中出现错误。它说对于iPad需要所有4个条目...是否有任何方法可以绕过这个问题?并成功提交应用程序? - MD Sazid Hasan Dip
是的 - 如果您勾选了“需要全屏”选项,您可以将其锁定为单个方向并提交。 - Mark B
之后运行程序时,它会将它们重新添加回去。 - Dennis Barzanoff

51

可以用啦!

info.plist文件以源代码方式打开,您会看到以下属性:

  • UISupportedInterfaceOrientations:适用于iPhone
  • UISupportedInterfaceOrientations~ipad:适用于iPad

Full Orientation Modes

UISupportedInterfaceOrientations~ipad下删除不需要的屏幕方向模式。对于我来说,我只想要纵向模式,因此我删除了其他模式,然后保存即可。

Portrait Mode Only

完成!祝你好运


1
这对我也有效,因为这个 bug 在 Xcode 11.2 中仍然存在,但在每个版本的 Xcode 上都可以工作。 - Rana Ali Waseem
完美运行 :) - logeshpalani31
1
此外,为了使其正常工作,如果您尚未这样做,您必须将“需要全屏”设置为true。否则,您的应用将无法通过App Store Connect验证,并且您将看到此错误https://dev59.com/xVwY5IYBdhLWcg3wgH3y。 - Paul Mayer

34
适用于Xcode 11、12、13(在Xcode 14中已修复)
可以使用部署信息设置独立设置iPhone方向设置和iPad方向设置,不需要更新info.plist文件。更新部署信息将为您更新info.plist。(这不直观,可能会被忽视)
例如,通过仅选择iPhone来设置iPhone部署信息。 enter image description here 然后通过仅选择iPad来选择iPad部署信息。此处删除横向选择。 enter image description here 最后,如果您想要同时设置iPhone和iPad设置,请将它们都选择。即使它们不同,设置也将保留iPhone和iPad(iPhone的方向设置显示,但iPad的方向设置保持不变)。 enter image description here 回到仅 iPad 部署信息仍然会显示设置。 enter image description here info.plist还会反映对iPhone和iPad使用部署信息所做的更改。 enter image description here

7
哇,谢谢。这是我见过的最令人困惑的设置之一。 - denkeni
2
非常感谢!这是一个违反直觉的用户体验,苹果真的让我有了不同的思考... - iago849

12

对于iOS 13及以后的版本,接受的答案并不完全适用,因为支持Split View。

基本上,如果你将Enable Multiple Windows设置为TRUE,则iPad上会忽略Supported Interface Orientations设置。这里的理由是,如果你允许你的应用程序在Split View中工作,则它可以被压缩到“奇怪”的尺寸,需要支持任何方向。

所有这些都有点难以理解,但由于上述原因,你需要在PLIST文件中将Enable Multiple Windows设置为FALSE

对于仅限iPhone的应用程序而言,这特别不直观,因为你不无理地认为iPhone设置会延续到iPad,前提是你没有设置其他答案中所述的单独的iPad方向设置。

因此,以下是您需要执行的屏幕记录:

如何支持仅支持竖屏的iPhone或iPad应用

具体地:

  1. 选择iPad并取消选择iPhone
  2. 根据需要设置支持的方向
  3. 取消设置【支持多个窗口】
  4. 切换回仅限iPhone

设备方向复选框很令人困惑。我启用了iPhone和iPad,并勾选了“纵向”,可以合理地认为它适用于两者,但我必须取消选择iPhone,然后取消所有其他已启用的默认情况下未显示的iPad方向,然后重新选择iPhone... - alstr
哇,经过尝试了很多解决方案后,这个对我起作用了。 - Binh Ho

8

这张图片已经足够了,只选择肖像。

set portrait mode


编辑 Shyam 的评论

Xcode8.3.3 MacOS Sierra v10.12.5

enter image description here


@KkMIW,你的AppDelegate设置是什么?你的方向设置是什么?请参考我的这篇帖子http://stackoverflow.com/q/43773075/6521116。 - LF00
AppDelegate 中没有关于方向的代码。我只在项目-目标-常规选项卡中启用了纵向模式。 - KkMIW
3
我解决了这个问题 -> 打开“常规”选项卡,将“设备”更改为iPad默认值,选择所有方向选项,取消选择左右横向方向,并将其再次更改为通用。运行应用程序(快点解决)。 - KkMIW
1
@KrisRoofe,不用担心。谢谢你的时间。 - Shyam
1
谢谢!最简单和最好的答案。 - levan
显示剩余8条评论

8
在至少 Xcode 10 中,对于一个通用的应用来说这个特性是有问题的。对于一个通用应用,仅通过检查相关方向来设置方向限制只适用于 iPhone,您需要进入 plist 文件并在“支持界面方向(iPad)”下删除不想要的方向,在那里无论您选择了什么,都会找到所有四种方向。这只是 Xcode 中的一个错误,显然没有高优先级,因为它已经存在一段时间了。

4
这些覆盖过程现在已经不起作用了。仅在info.plist中更改iPad支持的UI方向仅在暂时解决问题,但当您进行应用程序验证和提交应用商店时,会创建问题。要成功验证和提交,您还必须添加键 "UIRequiresFullScreen"。您需要像这样修改键。
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UIRequiresFullScreen</key>
<true/>

我已经测试过这个功能,它可以正常工作。


-1

xCode 11

项目 ----> 常规 -----> 设备 ----> iPad

iPad


-1

请不要发布重复的答案。 - HangarRash
您的“更多详情”链接只是指向一个从 SO(Stack Overflow)复制内容的网站。真正的来源是这个问题。 - General Grievance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接