web-dev-qa-db-fra.com

Vue secondaire en haut de la fenêtre dans Swift

Je souhaite placer un UIView sur tout l'écran (y compris la barre de navigation). Cette vue sera noire avec une opacité de 0,3. Je veux faire cela pour assombrir le contenu de l'écran et pousser une vue par dessus. J'utilise ce code:

UIApplication.sharedApplication().keyWindow?.addSubview(darkView)

Cela couvre tout l'écran comme prévu. Cependant, je souhaite maintenant placer une autre vue au-dessus de cette vue sombre. Y a-t-il un moyen de faire cela? Tout ce que j'essaie a pour résultat que la vue est sous la vue sombre. Tous les indicateurs seraient vraiment appréciés! Merci

24
Kex

C'est vraiment simple.

Vous venez d'ajouter une autre vue à window! Et ce sera là, au-dessus de la première vue que vous avez ajoutée. Par exemple, ce code ajoute une vue noire et une vue blanche:

let window = UIApplication.sharedApplication().keyWindow!
let v = UIView(frame: window.bounds)
window.addSubview(v);
v.backgroundColor = UIColor.blackColor()
let v2 = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 50))
v2.backgroundColor = UIColor.whiteColor()
window.addSubview(v2)

Vous pouvez également ajouter la nouvelle vue en tant que vue secondaire de la première vue que vous avez ajoutée:

let window = UIApplication.sharedApplication().keyWindow!
let v = UIView(frame: window.bounds)
window.addSubview(v);
v.backgroundColor = UIColor.blackColor()
let v2 = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 50))
v2.backgroundColor = UIColor.whiteColor()
v.addSubview(v2)

Swift 4  

let window = UIApplication.shared.keyWindow!
    let v = UIView(frame: window.bounds)
    window.addSubview(v);
    v.backgroundColor = UIColor.black
    let v2 = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 50))
    v2.backgroundColor = UIColor.white
    v.addSubview(v2)

Simple!

51
Sweeper

Pour Swift 3, utilisez ceci:

let window = UIApplication.shared.keyWindow!
window.addSubview(someView)
17
Mario Jaramillo

Swift 4 , Ajout d’un UIViewController en tant que sous-vue à UIWindow

Ce code sert à ajouter le contrôleur de vue en tant que sous-vue, couvrant toute la fenêtre avec une animation simple.

let appDelegate = UIApplication.shared.delegate as! AppDelegate
var customReviewPopup = ReviewPopupViewController.init(nibName: "ReviewPopupViewController", bundle: Bundle.main)

self.appDelegate.window?.addSubview((customReviewPopup.view)!)
self.customReviewPopup.view.frame = (self.appDelegate.window?.bounds)!
self.customReviewPopup.view.alpha = 0
self.customReviewPopup.view.isHidden = true

UIView.animate(withDuration: 0.3, delay: 0, options: .transitionCrossDissolve, animations: {
    self.customReviewPopup.view.isHidden = false
    self.customReviewPopup.view.alpha = 1
}, completion: nil)
1
Pramod More