2016-07-23 66 views
15

我想在整个屏幕(包括导航栏)上放置UIView。该视图将以0.3不透明度呈现黑色。我想这样做是为了使屏幕内容变暗,并在此基础上推送视图。我正在使用此代码:Swift中窗口视图顶部的子视图

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

这涵盖了整个屏幕的预期。不过,我现在想要在这个黑暗的视野之上放置另一个视角。有没有办法做到这一点?我所尝试的一切只会导致视角处于黑暗的视野之下。任何指针将非常感激!谢谢

+0

你需要显示你已经尝试 – Feldur

+0

代码你为什么不只是从你的电流控制器呈现出半透明的全屏幕控制器?如果你认为你需要添加一个视图到窗口,你可能会做错了。 – Sulthan

+0

您应该使用自定义转换来实现此功能,而不是这种方式。 –

回答

27

这是真的简单。

您只需将另一个视图添加到window!它会在那里,在你添加的第一个视图之上。例如,该代码添加一个黑色的视图和白的观点:

let window = UIApplication.sharedApplication().keyWindow! 
let v = UIView(frame: CGRect(x: window.frame.origin.x, y: window.frame.origin.y, width: window.frame.width, height: window.frame.height)) 
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: CGRect(x: window.frame.origin.x, y: window.frame.origin.y, width: window.frame.width, height: window.frame.height)) 
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) 

简单!

+1

感谢你们,但是有没有一种方法可以将视图从现有视图控制器添加到窗口中的视图前面,而无需直接添加它? – Kex

+0

@Kex不,据我所知。 – Sweeper

+0

谢谢你的解释。效果很好。 – Raja

13

对于SWIFT 3使用本:

let window = UIApplication.shared.keyWindow! 
window.addSubview(someView) 
相关问题