в прошивке 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
. Другими словами, проблема возникает только при представлении контроллера полного экрана.
Любые предложения?
Это замечательно. Это так раздражает, что в iOS 8 так много проблем, как этот. – spybart
Да, но я думаю, что они улучшат ситуацию, поскольку мы будем пытаться писать больше приложений-агностиков в будущем. Большая часть материала в iOS 8 посвящена исправлению вещей, которые были сделаны странными или неправильными в первый раз. –