2016-07-23 8 views
15

Ich möchte eine UIView über den gesamten Bildschirm (einschließlich der Navigationsleiste) platzieren. Diese Ansicht ist schwarz mit einer Deckkraft von 0,3. Ich möchte dies tun, um den Bildschirminhalt abzudunkeln und einen Überblick darüber zu geben. Ich verwende diesen Code:Subview oben auf Fensteransicht in Swift

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

Dies deckt den gesamten Bildschirm wie erwartet ab. Allerdings möchte ich nun eine weitere Ansicht über diese dunkle Ansicht legen. Gibt es eine Möglichkeit, dies zu tun? Alles, was ich versuche, führt nur dazu, dass die Ansicht unter der dunklen Sichtweise ist. Irgendwelche Hinweise würden wirklich geschätzt werden! Danke

+0

Sie müssen den Code zeigen, was Sie – Feldur

+0

Warum einfach nicht versucht haben Sie einen halbtransparenten Vollbild-Controller von Ihrem aktuellen Controller präsentieren? Wenn Sie denken, dass Sie dem Fenster eine Ansicht hinzufügen müssen, tun Sie wahrscheinlich falsch. – Sulthan

+0

Sie sollten dies mit benutzerdefinierten Übergang implementieren, nicht auf diese Weise. –

Antwort

27

Es ist wirklich einfach.

Sie fügen einfach eine andere Ansicht zu window hinzu! Und es wird da sein, über der ersten Ansicht, die Sie hinzugefügt haben. Zum Beispiel fügt dieser Code eine schwarze Ansicht und eine weiße Ansicht:

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) 

Sie können auch die neue Ansicht als Teilansicht der ersten Ansicht hinzufügen, die Sie hinzugefügt:

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) 

einfach!

+1

Danke dafür, gibt es jedoch eine Möglichkeit, eine Ansicht von einem vorhandenen View-Controller an die Vorderseite von Ansichten im Fenster zu bringen, ohne sie direkt hinzuzufügen? – Kex

+0

@Kex Nein, soweit es mich betrifft. – Sweeper

+0

Vielen Dank für Ihre Erklärung. Funktioniert gut. – Raja

13

Für SWIFT 3 Verwendung dieses:

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