Я пытаюсь создать всплывающее окно (UIView
) с прозрачным фоном (другое UIView
). Все работает отлично для «popup UIView
», но я не мог понять, как принести «прозрачный фон UIView
» (выше NavigationBar и TabBar).Размещение UIView для покрытия TabBar & NavBar
Сначала я создал UIView в раскадровке и подключен выход:
popupView.center = CGPointMake(CGRectGetMidX(self.view.bounds), tableView.center.y);
self.view.addSubview(popupView)
popupView.clipsToBounds = true
popupView.alpha = 0
Затем, во время отображения popupView
Я создаю прозрачный фон UIView:
func clicked() {
self.popupView.alpha = 1
let screenSize: CGRect = UIScreen.mainScreen().bounds
let opaqueView = UIView()
opaqueView.frame.size = CGSize(width: screenSize.width, height: screenSize.height)
opaqueView.backgroundColor = UIColor.blackColor()
opaqueView.alpha = 0.5
self.view.addSubview(opaqueView)
}
Однако фон вид Безразлично не переходите на NavigationBar или TabBar. Я попытался это, но ничего не меняется:
myTabBar.view.bringSubviewToFront(opaqueView)
То, что я хочу добиться того, что, в то время как имеющие popup UIView
на самом фронте, имея opaque UIView
над всем, включая NavBar и TabBar, но за popup UIView
Обновление:
Что касается ответа @ Alex, с этим куском мне удалось отобразить opaqueView
по TabBar & NavBa р; но теперь он также выходит за пределы popupView.
func display() {
popupView.center = CGPointMake(CGRectGetMidX(self.view.bounds), tableView.center.y);
self.view.addSubview(popupView)
popupView.clipsToBounds = true
let opaqueView = UIView()
let screenSize: CGRect = UIScreen.mainScreen().bounds
opaqueView.frame.size = CGSize(width: screenSize.width, height: screenSize.height)
UIApplication.sharedApplication().keyWindow!.insertSubview(opaqueView, belowSubview: popupView)
}
Как разместить opaqueView под popupView, а opaqueView - над всем остальным?
Я тоже это пробовал, он привносит opaqueView поверх popupView (чего я не хочу), и не переносит NavBar и TabBar. К сожалению, ваш ответ не помогает:/ – senty
Чтобы заставить его работать, вы должны добавить свой opaqueView следующим образом: UIApplication.sharedApplication(). KeyWindow! .addSubview (opaqueView); Тогда непрозрачный вид будет в верхней части ваших подзонов. Вы не можете добавить его в свой вид (self.view.addSubview (opaqueView)) и дождаться отображения его на панели навигации и панели вкладок. Одним из других решений является добавление его в tabbarController.view или navigationController.view. –
Работает как шарм. Большое спасибо. Но у меня есть вопрос. Когда я использую 'UIApplication.sharedApplication(). KeyWindow! .addSubview (opaqueView);' opaqueView перебирает popUpView. Я попытался использовать 'opaqueView.bringSubviewToFront (popupView)', но ничего не меняет. Как я могу принести «popUpView» над «opaqueView»? – senty