Ответ 1
ModalViewController используется для прерывания текущего рабочего процесса и отображения нового набора представлений. Поэтому, когда вы представляете модально, здесь, в данном случае, вы представляете B, текущий активный Viewcontroller - это B, а не A.
A ViewController - это традиционные объекты контроллера в шаблоне проектирования Model-View-Controller (MVC). Они также заботятся о пользовательском интерфейсе, распознаваниях жестов, управлении событиями (например, кнопок) и выравнивании представлений, присутствующих в них.
Когда вы представили B, текущий контроллер просмотра изменился с A на B, и, следовательно, при попытке поворота (если поддержка ориентации предоставляется), представление B выполняется как активный элемент управления представлением, и он реагирует на поворот. Обычно они остаются незамеченными, потому что представление непрозрачно. Здесь в вашем случае представление прозрачное, и мы замечаем, что A не ответил на поворот.
Я попробовал приведенный выше пример в iOS6 (из того, что вы упомянули)
ViewController2 *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"VC2"];
vc.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:YES completion:nil];
здесь A остался в портретном режиме
Когда я сделал это, добавив второй просмотр viewcontroller в качестве подзаголовка, A изменился на альбомный
ViewController2 *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"VC2"];
vc.view.backgroundColor = [UIColor clearColor];
self.view addSubview:vc.view];
это произошло, потому что во втором испытании активным контроллером просмотра был A, а не B, поскольку B-представление представляло собой подпункт, добавленный в A. Пройдите через Документ Яблок на