Sto tentando di creare un popup (UIView
) con uno sfondo trasparente (altro UIView
). Tutto sta funzionando bene per il 'popup UIView
' ma non riuscivo a capire come portare 'sfondo trasparente UIView
' (sopra NavigationBar e TabBar).Inserimento di UIView per copertura TabBar e NavBar
Per prima cosa ho creato l'UIView nello Storyboard e collegato alla presa:
popupView.center = CGPointMake(CGRectGetMidX(self.view.bounds), tableView.center.y);
self.view.addSubview(popupView)
popupView.clipsToBounds = true
popupView.alpha = 0
Poi, durante la visualizzazione popupView
sto creando lo sfondo trasparente 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)
}
Tuttavia, la vista sfondo doesn passare sopra NavigationBar o TabBar. Ho provato questo, ma non cambia nulla:
myTabBar.view.bringSubviewToFront(opaqueView)
Quello che voglio ottenere è che, pur avendo popup UIView
nella parte anteriore, avendo opaque UIView
su tutto compreso NavBar e TabBar, ma dietro popup UIView
Aggiornamento:
Per quanto riguarda la risposta di @ Alex, con questo blocco, ho ottenuto la visualizzazione di opaqueView
su TabBar & NavBa r; ma ora sta anche andando sopra la 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)
}
Come posso collocare opaqueView sotto popupView mentre opaqueView è sopra ogni altra cosa?
Ho provato anche questo, sta portando l'opaqueView su popupView (che non voglio), e non lo porta su NavBar e TabBar. Sfortunatamente, la tua risposta non aiuta:/ – senty
Per farlo funzionare dovresti aggiungere il tuo opaqueView in questo modo: UIApplication.sharedApplication(). KeyWindow! .addSubview (opaqueView); Quindi la visualizzazione opaca sarà nella parte superiore delle sottoview. Non è possibile aggiungerlo alla vista (self.view.addSubview (opaqueView)) e attendere la visualizzazione sulla barra di navigazione e sulla barra delle schede. Una delle altre soluzioni è aggiungerla a tabbarController.view o navigationController.view. –
Funziona come un fascino. Molte grazie. Ma ho una domanda. Quando uso 'UIApplication.sharedApplication(). KeyWindow! .addSubview (opaqueView);' opaqueView passa a popUpView. Ho provato a usare 'opaqueView.bringSubviewToFront (popupView)', ma non cambia nulla. Come posso portare 'popUpView' sopra 'opaqueView'? – senty