IOS: Применить вид вращения для просмотра контроллера в режиме мода

Я выполнял решение на этом вопросе, чтобы отобразить представление с прозрачным фоном. Проблема, с которой я столкнулась, - это когда отображается диспетчер модального представления, основной вид больше не поворачивается.

Например, если A - мой контроллер представления, тогда B - это мое модальное представление. Вопрос заключается в следующем. В настоящее время у меня есть портфолио на устройстве и отображается A. Затем я представляю B по модулю. Затем я поворачиваю свое устройство, и B вращается вместе с ним, однако A остается таким, каким он был.

Пожалуйста, можете ли кто-нибудь посоветовать, как обращаться с этим вращением, чтобы поворот основного вида (A) тоже изменился?

Ответ 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. Пройдите через Документ Яблок на