UIDeviceOrientation ipad - PullRequest
       1

UIDeviceOrientation ipad

6 голосов
/ 14 сентября 2011

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

- (void)setData:(BCPlaylist *)list  {
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
    if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown){
      NSLog(@"portrait");
      [self setPlaylist:list];
      [self renderPlaylist];
      [activity stopAnimating];
    }else{
      NSLog(@"landscape");
      [self setPlaylist:list];
      [self renderPlaylistOne];
      [activity stopAnimating];
     }
}

Я корректно меняю виды в - (void)animateRotation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration { Но это не работает, когда уже в альбомной или портретной ориентации при изменении списка воспроизведения.

Ответы [ 3 ]

8 голосов
/ 14 сентября 2011

Вместо использования [[UIDevice currentDevice] ориентация] для проверки ориентации используйте ориентацию строки состояния, чтобы получить точную ориентацию.

    UIDeviceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
2 голосов
/ 06 октября 2011

Чтобы избежать предупреждения, используйте:

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
1 голос
/ 13 января 2012

Вы бы всегда получали ландшафт, потому что это ваше значение по умолчанию (из вашего оператора if).Если вы пройдете через отладчик с точкой останова, то увидите, что указанная ориентация равна Неизвестно .

На самом деле ваш код в порядке, но это ограничениесимулятор.Если вы берете тот же код, используя ориентацию Device , а не ориентацию Interface , вы получите фактические значения, если будете использовать его на физическом устройстве, которое может управляться ifзаявление у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...