Я хочу отобразить поверх любых других видов, даже панели навигации, своего рода «всплывающее» представление, которое выглядит следующим образом:
- полноэкранный черный фон с 0,5 альфа, чтобы увидеть другой
UIViewController
снизу. UIView
окно в середине с некоторой информацией (календарь , если вы хотите , чтобы все знать).
Для этого я создал UIViewController, который содержит два элемента UIViews
(фон и окно), и я пытаюсь его отобразить. Я попробовал простой [mySuperVC addSubview:myPopUpVC.view]
, но у меня все еще есть панель навигации выше.
Я пытался представить его как модальный, но UIViewController
нижний слой исчезает, и я теряю эффект прозрачности.
Любая идея сделать это, я уверен, что это довольно просто ...
Спасибо!
ios
uiviewcontroller
uinavigationbar
popupwindow
Николас Рой
источник
источник
Ответы:
Вы можете сделать это, добавив свой вид непосредственно в keyWindow:
ОБНОВЛЕНИЕ - Для Swift 4.1 и выше
источник
[self.navigationController.view addSubview:overlayView];
это то, что вы действительно хотитеисточник
Вот простое элегантное решение, которое работает для меня. Вы можете установить z положение навигационной панели ниже вида:
Просто не забудьте установить его обратно на 0, когда закончите.
источник
Версии Swift для проверенного ответа:
Свифт 4:
Swift 3.1:
источник
Добавьте свой вид как подпредставление NavigationController.
Вы также можете добавить его через окно:
Надеюсь это поможет.. :)
источник
let navigationBar = viewController.navigationController!.navigationBar navigationBar.addSubview(coverView)
Далеф отличное решение в Свифте:
источник
Ответ @ Nam отлично работает, если вы просто хотите отобразить свой пользовательский вид, но если ваш пользовательский вид требует взаимодействия с пользователем, вам нужно отключить взаимодействие для
navigationBar
.Как сказано в ответе Нэма, не забудьте отменить эти изменения:
Вы можете сделать это лучше с расширением:
И просто используйте это так:
источник
Быстрая версия ответа @Nicolas Bonnet:
Не забывайте, что окно должно быть сильным свойством, потому что оригинальный ответ приводит к немедленному освобождению окна
источник
Я рекомендую вам создать новое окно UIWindow:
Затем вы можете управлять своим представлением в другом UIViewController. Чтобы удалить окна:
надеюсь, что это поможет!
источник
Существует несколько способов сделать это:
1- Добавьте свой
UIView
наUIWindow
вместо добавления егоUIViewController
. Таким образом, это будет на вершине всего.2- Используйте пользовательский переход, который будет показывать ваш UIViewController сзади с альфа 0,5
Для этого я рекомендую вам взглянуть на это: https://github.com/Citrrus/BlurryModalSegue
источник
источник
В Swift 4.2 и Xcode 10
В цели C
UIView * spinnerView; // Это ваш взгляд
Это может работать только в портретном или ландшафтном режиме.
Еще один простой код:
источник
Обратите внимание, если вы хотите добавить вид в полноэкранном режиме, используйте только код ниже
Добавьте эти расширения в UIViewController
Продолжайте как обычно добавляя процесс subview
Теперь используйте при добавлении viewDidAppear UIViewController
источник
Я бы использовал подкласс UIViewController, содержащий «представление контейнера», которое встраивает ваши контроллеры представления других. После этого вы сможете добавить контроллер навигации в представление «Контейнер» (например, с помощью перехода «вставка»).
См. Реализация контроллера представления контейнера
источник
Этот метод работает с xcode 9.4, iOS 11.4
источник
источник
Вам необходимо добавить подпредставление в первое окно с типом UITextEffectsWindow. Во-первых, потому что пользовательские клавиатуры добавляют свой UITextEffectsWindow, и если вы добавите в него подпредставление, это не будет работать правильно. Кроме того, вы не можете добавить подпредставление к последнему окну, потому что клавиатура, например, также является окном, и вы не можете представить ее из окна клавиатуры. Поэтому лучшее решение, которое я нашел, - это добавить подпредставление (или даже контроллер push-представления) в первое окно с типом UITextEffectsWindow, это окно охватывает вспомогательный вид, панель навигации - все.
источник