![](/img/trans.png)
[英]alert view is not visible when adding a view as a subview of the application top window
[英]Subview on top of window view in Swift
我想在整个屏幕(包括导航栏)上放置一个 UIView。 此视图将为黑色,不透明度为 0.3。 我想这样做是为了使屏幕内容变暗并在此之上推送一个视图。 我正在使用此代码:
UIApplication.sharedApplication().keyWindow?.addSubview(darkView)
这按预期覆盖了整个屏幕。 但是我现在想在这个黑暗视图之上放置另一个视图。 有没有办法做到这一点? 我尝试的一切只会导致视图在黑暗视图下。 任何指针将不胜感激! 谢谢
这真的很简单。
您只需向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)
您还可以将新视图添加为您添加的第一个视图的子视图:
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)
斯威夫特 4
let window = UIApplication.shared.keyWindow!
let v = UIView(frame: window.bounds)
window.addSubview(v)
v.backgroundColor = .black
let v2 = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 50))
v2.backgroundColor = UIColor.white
v.addSubview(v2)
简单!
对于 SWIFT 3,请使用:
let window = UIApplication.shared.keyWindow!
window.addSubview(someView)
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)
斯威夫特 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.