it-swarm.com.ru

Форсирование ландшафта и автоповорот в iOS 7

Мое приложение должно быть только в альбомной ориентации, и у меня не было проблем с этим при сборке для iOS 6 и более ранних версий. Теперь с iOS 7, Он не будет вращаться вообще.

В настройках моего приложения он установлен в альбомную ориентацию только влево/вправо. В моем контроллере представления я использую следующее:

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
}

Я также использовал это, которое теперь устарело:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
    return UIInterfaceOrientationIsLandscape(orientation);
}

Похоже, что новый должен бытьAutorotate, но при этом происходит сбой моего приложения. Любые идеи по этому поводу будут оценены, так как мое приложение вынуждено портретировать на моем iPad и в симуляторе. Спасибо!

11
ultra

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

(NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

(BOOL)shouldAutorotate {
    return YES;
}

Правка: у меня могут быть проблемы с симулятором, и выполнение сброса/перезапуска и очистки, возможно, способствовало исправлению.

12
ultra

Включите этот метод в ваш код:

- (BOOL)shouldAutorotate{
  if([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft ||[[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeRight)
  {
    return YES;
  }
  else{
    return NO;
  }
}

Читайте это для получения дополнительной информации. Здесь упоминается, что мы должны переопределить shouldAutorotate для подавления ориентации.

Если вы хотите временно отключить автоматический поворот, избегайте манипулируя масками ориентации, чтобы сделать это. Вместо этого переопределите Метод shouldAutorotate на самом верхнем контроллере представления. Этот метод вызывается перед выполнением любого авторотации. Если он возвращает NO, тогда вращение подавлено.

4
Puneet Sharma

я не знаю почему, но эта работа для меня IOS 7

[[UIApplication sharedApplication] setStatusBarHidden:NO];

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];

[super willRotateToInterfaceOrientation:UIInterfaceOrientationPortrait duration:0];
1
Siddhartha Moraes

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

Это сработало для меня: (Симулятор -> Сбросить содержимое и настройки ...)

0
ShanghaiD