Запуск приложения в альбомной ориентации вызывает вращение при запуске - PullRequest
2 голосов
/ 14 декабря 2010

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 14 декабря 2010

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

    <key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationPortraitUpsideDown</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
</array>
0 голосов
/ 14 декабря 2010

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

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

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

...