Как отобразить пользовательский модальный пользовательский интерфейс?

#iphone #ios #ipad #uiview

#iPhone #iOS #iPad #uiview

Вопрос:

Я пытаюсь отобразить пользовательский UIView поверх всех других представлений, сделав его модальным, который корректно работает как в книжной, так и в альбомной ориентации. Способ, которым я сейчас это делаю, заключается в создании прозрачного черного вида, который в основном затемняет весь экран, а затем добавляет поверх него мой пользовательский вид. Все работает отлично, за исключением того факта, что оно не ориентирует само свойство, когда находится в альбомной ориентации. Я думаю, это связано с тем, как я добавляю свой вид:

 UIWindow* mainWindow = (((MyAppDelegate*)[UIApplication sharedApplication].delegate).window);   
[mainWindow addSubview:self];
  

Кажется, что MainWindow ВСЕГДА находится в портретном режиме, независимо от фактической ориентации устройства, поэтому, даже когда я нахожусь в альбомной ориентации, мой пользовательский вид отображается вверх ногами, как если бы он был в портретном режиме. Мой основной viewcontroller — это navcontroller, который добавляет поверх него несколько пользовательских представлений, поэтому я действительно не хочу передавать ссылку на него полностью через мои представления, чтобы я мог использовать его выше.

Наконец, мой вопрос заключается в том, как мне правильно добавить свой пользовательский вид в основные окна, чтобы он был правильно ориентирован как в альбомной, так и в портретной ориентации и по-прежнему отображался по всему экрану.

Спасибо

Комментарии:

1. iphone или ipad? Какому контроллеру принадлежит «self», который вы добавляете в MainWindow? Почему ваш главный ViewController не может отправить модальный вид?

2. согласен; самым простым способом было бы вызвать presentModalViewController из вашего корневого контроллера просмотра.

Ответ №1:

Создайте и создайте новый UIWindow с более высоким zorder и добавьте к нему контроллер представления. Контроллер просмотра имеет встроенную логику для обработки поворота вида.