4

в прошивке 7 и раньше, я был в состоянии внести изменения пользовательского интерфейса в viewDidLayoutSubviews следующим образом:ориентация интерфейса не исправит в представленных контроллерах просмотреть в прошивке 8

- (void)viewDidLayoutSubviews { 

    [super viewDidLayoutSubviews]; 

    if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) { 

     //update views for landscape 

    } 

    else { 

     //update views for portrait 

    } 

} 

Я все еще могу сделать это в прошивке 8 кроме в виду контроллеры, которые представлены другими контроллерами представлений. Когда контроллер представления представлен другим контроллером представления, это не работает, потому что свойство self.interfaceOrientation неверно в представленном контроллере представления. Он не отражает текущую ориентацию, а скорее ориентацию прямо перед вращением устройства.

Проблема отсутствует при представлении контроллера вида на iPad с modalPresentationStyle, установленным на UIModalPresentationPageSheet. Другими словами, проблема возникает только при представлении контроллера полного экрана.

Любые предложения?

ответ

4

Попробуйте использовать вместо этого:

[[UIApplication sharedApplication] statusBarOrientation] 

Кроме того, если вы прекращаете поддержку прошивки 7 и собираетесь 8-только, я рекомендую вам уронить ориентацию интерфейса обработки в пользу коллекций признака и размерных классов, если вы Можно.

+0

Это замечательно. Это так раздражает, что в iOS 8 так много проблем, как этот. – spybart

+0

Да, но я думаю, что они улучшат ситуацию, поскольку мы будем пытаться писать больше приложений-агностиков в будущем. Большая часть материала в iOS 8 посвящена исправлению вещей, которые были сделаны странными или неправильными в первый раз. –

Смежные вопросы