Запуск приложения в альбомной ориентации вызывает вращение при запуске

Я реализовал shouldAutorotateToInterfaceOrientation, и все работает нормально с точки зрения или изменений ориентации в моем приложении после его запуска. Однако мне не нравится поведение моего приложения при первом запуске.

Когда я запускаю свое приложение в портретной ориентации, оно открывается, как и ожидалось, однако, когда я запускаю свое приложение в альбомной ориентации, я вижу, что все загружается в портретной ориентации (включая строку состояния), а затем я вижу анимацию моего поворота экрана в альбомную. Эта анимация хороша, но я не хочу, чтобы она отображалась при запуске.

Когда я смотрю на большинство других приложений, кажется, что они определяют ориентацию при запуске и не показывают анимацию вращения при запуске (только если устройство повернуто после времени запуска).

Как я могу убедиться, что мое приложение загружается в правильной ориентации, чтобы пользователь не видел анимацию вращения при запуске. Я бы предпочел, чтобы пользователь видел анимацию вращения только в том случае, если он / она вращает устройство после запуска.


person Jackson    schedule 14.12.2010    source источник


Ответы (2)


Ладно, думаю, я понял это. Для всех, кто создал приложение на iPhone tempalte, а затем модифицировал его для iPad, вам необходимо добавить строку в файл -info.plist, в которой говорится «Поддерживаемые ориентации интерфейса», и ввести все поддерживаемые ориентации, как показано ниже. Тогда вроде работает как положено.

    <key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationPortraitUpsideDown</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
</array>
person Jackson    schedule 14.12.2010
comment
Отлично. Это устранило мою проблему. Мое приложение поддерживало только альбомную ориентацию, но запускалось бы в перевернутом виде, если бы устройство не находилось в ориентации настройки UIInterfaceOrientation. Он вращался достаточно быстро, но это раздражало. (Также необходимо было предоставить правильное стартовое изображение, чтобы время от времени оно не начиналось в портретной ориентации.) Спасибо! (Для других это описано здесь, j.mp/fY56ml) - person lilbyrdie; 28.01.2011
comment
Рад, что смог помочь! не стесняйтесь голосовать за мой ответ или что-то в этом роде, чтобы я мог получить баллы за ответ на свой вопрос! :) - person Jackson; 01.02.2011

Я сделал что-то вроде этого в своих приложениях:

if ([[UIDevice currentDevice] orientation]==UIInterfaceOrientationLandscapeRight){
  [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
}else if ([[UIDevice currentDevice] orientation]==UIInterfaceOrientationLandscapeLeft){
  [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft];
}

Проще говоря: определите ориентацию в начале, а затем установите для StatusBarOrientation это значение. Если вы сделаете это до загрузки своего представления (или, по крайней мере, так раньше, как это было возможно в структуре вашего приложения), строка состояния должна появиться с начала с правой стороны (поэтому вращение не требуется). Если вы хотите поддерживать также портретную ориентацию, просто добавьте для них еще 2 вилки ...

person Constantin    schedule 14.12.2010
comment
Я просто попробовал это, но добавил еще два if для UIInterfaceOrientationPortrait и UIInterfaceOrientationPortraitUpsideDown, и это ничего не меняет. Мое приложение все еще запускается, затем строка состояния меняется, а затем экран поворачивается в правильную ориентацию. :( Я добавил его в didFinishLaunchingWithOptions в моем делегате приложения. Это то место, где я должен его добавлять? - person Jackson; 14.12.2010