2016-07-23 61 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)