Swift窗口视图上的子视图

Kex*_*Kex 34 uiview ios swift

我想在整个屏幕上放置一个UIView(包括导航栏).该视图将为黑色,具有0.3不透明度.我想这样做是为了使屏幕内容变暗并在此基础上推送视图.我正在使用此代码:

UIApplication.sharedApplication().keyWindow?.addSubview(darkView)
Run Code Online (Sandbox Code Playgroud)

这按预期覆盖整个屏幕.但是我现在想在这个黑暗的视图之上放置另一个视图.有没有办法做到这一点?我尝试的一切只会导致视图处于黑暗视野之下.任何指针都会非常感激!谢谢

Swe*_*per 67

简单.

你只需添加另一个视图window!它会在你添加的第一个视图之上.例如,此代码添加黑色视图和白色视图:

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)
Run Code Online (Sandbox Code Playgroud)

您还可以将新视图添加为您添加的第一个视图的子视图:

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)
Run Code Online (Sandbox Code Playgroud)

斯威夫特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)
Run Code Online (Sandbox Code Playgroud)

简单!


Mar*_*llo 18

对于SWIFT 3,请使用:

let window = UIApplication.shared.keyWindow!
window.addSubview(someView)
Run Code Online (Sandbox Code Playgroud)


Has*_*ved 8

斯威夫特5:

let window = UIApplication.shared.windows.last!

let viewToShow = UIView(frame: CGRect(x: 0, y: 0, width: window.frame.size.width, height: 40.0))

viewToShow.backgroundColor = UIColor.white

window.addSubview(viewToShow)
Run Code Online (Sandbox Code Playgroud)


Pra*_*ore 6

Swift 4,将UIViewController作为子视图添加到UIWindow

此代码用于将视图控制器添加为子视图,用简单的动画覆盖整个窗口。

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)
Run Code Online (Sandbox Code Playgroud)