it-swarm.com.ru

iOS 9: предупреждение "Все ориентации интерфейса должны поддерживаться, если приложению не требуется полноэкранный режим" для универсального приложения

Я работаю над универсальным приложением с все ориентации на iPad и только портрет на iPhone. Приложение хорошо работает с многозадачностью с разделенным экраном на iOS 9-совместимом iPad, но у меня есть следующее предупреждение:

All interface orientations must be supported unless the app requires full screen

И мое приложение не требует полноэкранного режима. Это ограничено только портретом на iPhone ... Разве это не должно быть хорошо? Есть ли способ объявить Требуется полноэкранный режим только на iPhone?

Заранее спасибо

Кстати я использую Xcode 7.3.1

42
Zaphod

Решением этой проблемы является использование «специфичных для устройства ключей»: 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, я теряю полную функциональность разделенного экрана - доступен только «пролистывание», поскольку это не влияет на использование моим приложением полного экрана устройства.

Флажки «Ориентация устройства» предназначены для значений по умолчанию. Единственный способ, которым они не повлияют на приложение на iPad, - это если в листе есть более конкретное значение, следовательно, значение специально для iPad.

Когда система выполняет поиск ключа в файле Info.plist вашего приложения, она выбирает ключ, наиболее соответствующий текущему устройству и платформе.

35
siburb

Установите для UIRequiresFullScreen значение YES в Info.plist.

 enter image description here

Наслаждаться...!!!

54
mital solanki

На самом деле это было слишком просто ... Вот почему я даже не пробовал:

 Configuration

Установка Portrait для Ориентация устройства не влияет на ориентацию iPad. 

Это означает, что раздел Device Orientation должен быть переименован в iPhone Orientation, действительно, с этой конфигурацией iPhone поддерживает только Portrait, а iPad поддерживает все из них. И разделенный экран все еще разрешен, так как мы не проверили Requires full screen.

PS: по крайней мере на Xcode 8.3.1, я не тестировал его на Xcode 7.x

8
Zaphod

Для вашего случая вы можете использовать: UISupportedInterfaceOrientations ~ iphone.

Измените раздел UISupportedInterfaceOrientations в Info.plist на:

<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>

Эта комбинация не дает никаких предупреждений.

0
tier777