2014-09-18 2 views
2

Я использовал этот фрагмент кода для отображения UIViewController как модального с полупрозрачным фоном (работа на IOS7 и ниже).ModalViewController Прозрачный фон

MyViewController *myViewController = [[MyViewController alloc] init]; 
navController.modalPresentationStyle = UIModalPresentationCurrentContext; 
[navController presentViewController:myViewController animated:NO completion:nil]; 

Теперь компиляция с IOS8 показывает модальный с черным фоном.

Есть ли решение? (Без создания анимированного subView) Спасибо.

+0

Возможно, это проблема копирования/вставки, но вы представляете «myViewController», но устанавливаете modalPresentationStyle для navController. – Krivoblotsky

+0

То же самое, navigationController имеет атрибут modalPresentationStyle, который может быть установлен в UIModalPresentationCurrentContext. Настройка на navController или UIViewController ничего не меняет на IOS8. – Hacketo

ответ

2

В iOS 8 и выше для этой цели вы можете использовать «UIModalPresentationOverCurrentContext». Из документации UIViewController:

UIModalPresentationOverCurrentContext

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

При представлении контроллера вида в popover эта презентация поддерживается только в том случае, если стиль перехода UIModalTransitionStyleCoverVertical. Исключение составляет попытка использовать другой стиль перехода . Тем не менее, вы можете использовать другие стили перехода (за исключением частичного перехода курсора), если родительский контроллер не находится в popover.

Доступно в iOS 8.0 и новее.

Я не знал, что видеть-через модально представленные контроллеры вида были когда-либо поддерживали до IOS 8 (и будут искать в том, что для собственного использования), но выше вариант определенно работает в моем тестировании в новом ОПЕРАЦИОННЫЕ СИСТЕМЫ.

Примечание. Обязательно представьте представленному контроллеру вида backgroundColor clearColor.

+1

большое спасибо, вы спасли мой день. – Hacketo

Смежные вопросы