У меня странные проблемы с представлением модальных видов из альбомной ориентации. Проблему можно воссоздать, просто запустив новое приложение на основе представления и выполнив следующие действия:
Создайте новый подкласс UIViewController, который будет представлен. Я назвал свой ModalViewController. Измените цвет фона представлений, чтобы сделать ошибку более заметной.
return YES; в обоих контроллерах shouldAutorotateToInterfaceOrientation:
Добавьте IBAction в основной вид, чтобы отобразить модальное окно, и привяжите это действие к кнопке в контроллере основного вида.
- (IBAction)showModal {
ModalViewController *vc = [[ModalViewController alloc] initWithNibName:@"ModalViewController" bundle:nil];
[self presentModalViewController:vc animated:NO];
[vc release];
}
Теперь, когда вы нажимаете кнопку в ландшафтном режиме, вы должны увидеть проблему. Весь вид смещен вверх и влево.
Кто-нибудь еще сталкивался с этой проблемой или есть обходные пути? У меня аналогичные проблемы на iPad.

Ответ 1 · рейтинг 1 · crayment
Заметив, что представление имеет правильный кадр в viewDidAppear и через некоторое время испортилось, я исправил это, реализовав следующее в ModalViewController. Это предполагает переменную экземпляра CGRect с именем frame_.
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
frame_ = [[self view] frame];
[self performSelector:@selector(fixFrame) withObject:nil afterDelay:0];
}
- (void)fixFrame {
[[self view] setFrame:frame_];
}
Я бы сказал, что это ошибка.
Ответ 2 · Manjunath
[self presentModalViewController:vc animated:YES];
Вместо отключения анимации попробуйте включить анимацию.
Ответ 3 · Stephen Darlington
Что относится к маску автоматического изменения размера вы используете? (Вы будете устанавливать это в файле XIB.) Похоже, что он не прикреплен к правой стороне экрана.
Кроме того, учитывает ли ваш взгляд размер строки состояния? (Отмечу, что зазор внизу очень похож по размеру на строку состояния.)
Вы можете смоделировать многое из этого в Interface Builder, нажав стрелку в строке заголовка представления.