2013-09-12 6 views
0

Я просто хочу, чтобы заблокировать вращение на строку состояния, когда некоторые условия:блокировки и разблокировка поворота строки состояния на основе условия

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 

     if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) { 
      if(imageView.hidden == NO){   

      //lock the status bar rotation 
      }else{ 
      //unlock the status bar rotation 
      } 
     } 
} 

Во всяком случае, чтобы заблокировать/разблокировать панель состояния программно? Thanx.

ответ

0

Вам необходимо переопределить соответствующие методы в классе контроллера вида. В iOS 6+ вам необходимо переопределить supportedInterfaceOrientations. Если вам также необходимо поддерживать iOS 5, также переопределите shouldAutorotateToInterfaceOrientation:.

Обе реализации должны возвращать соответствующие значения в текущих разрешенных ориентациях.

+0

Я показываю модальный вид (подкласс UIView'), добавляя его в окно (а не контроллер вида), чтобы заблокировать его от вращения. Все работает отлично, за исключением строки состояния, которая поворачивается при перемещении к пейзажу. Поэтому мне нужно заблокировать его, пока отображается модальное представление. Вот так :) Есть ли все-таки сделать это? Я попытался установить [UIApplication sharedApplication] .statusBarOrientation = UIInterfaceOrientationMaskAll; но он не работает – Malloc

+0

Мой ответ предполагает, что вы использовали контроллер вида. Я не уверен, что делать в вашем случае. – rmaddy

+0

Ничего, я нашел, что это спрятано, чтобы быть лучшим способом в моем случае: '[UIApplication sharedApplication] .statusBarHidden = YES;' – Malloc