我正在使用iPad上的所有方向和iPhone上仅限肖像的通用应用程序。该应用程序适用于iOS 9兼容iPad上的分屏多任务,但我有这个警告:
All interface orientations must be supported unless the app requires full screen
我的应用不需要全屏。它只限于iPhone上的肖像......难道不行吗?有没有办法只在iPhone上声明需要全屏?
提前致谢
顺便说一句,我使用的是Xcode 7.3.1
答案 0 :(得分:57)
答案 1 :(得分:37)
解决方法是使用"设备特定密钥": https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html#//apple_ref/doc/uid/TP40009254-SW9
因此,您的plist值看起来像:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIRequiresFullScreen~ipad</key>
<false/>
当我删除UIRequiresFullScreen
键的iPad特定版本时,我将失去完整的分屏功能 - 只有&#34;滑过&#34;是可用的,因为这不会影响我的应用使用整个设备屏幕。
&#34;设备方向&#34;复选框用于默认的plist值。他们不会影响iPad上的应用程序的唯一方法是,如果plist中有更具体的值,那么这个值就是专门针对iPad的。
当系统在您的应用的Info.plist文件中搜索某个键时,它会选择最特定于当前设备和平台的键。
答案 2 :(得分:8)
事实上,这太容易了......这就是为什么我甚至没有尝试过它:
为设备方向设置0
不会影响iPad方向。
这意味着设备方向部分应重命名为 iPhone Orientation ,实际上,使用该配置,iPhone仅支持Portrait
并且iPad支持所有他们由于我们尚未选中Portrait
,因此仍然允许拆分屏幕。
PS:至少在Xcode 8.3.1上,我没有在Xcode 7.x上测试过它。
答案 3 :(得分:0)
对于您的情况,您可以使用:UISupportedInterfaceOrientations〜iphone。
将Info.plist中的UISupportedInterfaceOrientations部分更改为:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~iphone</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
此组合不会产生警告。
答案 4 :(得分:-3)
从“偏好设置”中转到“位置”标签,找到项目的派生数据文件夹,然后删除与该项目相关的文件。