2016-07-23 5 views
15

Chcę umieścić UIView na całym ekranie (łącznie z paskiem nawigacyjnym). Ten widok będzie czarny z nieprzezroczystością 0.3. Chcę to zrobić, aby przyciemnić zawartość ekranu i popchnąć widok do góry. Używam tego kodu:Wywiad nad widokiem okna w Swift

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

Obejmuje cały ekran zgodnie z oczekiwaniami. Jednak teraz chcę umieścić inny widok na tym ciemnym widoku. Czy jest jakiś sposób na zrobienie tego? Wszystko, co próbuję, powoduje, że widok jest pod ciemnym spojrzeniem. Wszelkie wskazówki byłyby naprawdę doceniane! dziękuje

+0

Trzeba będzie pokazać kod, czego próbowaliśmy – Feldur

+0

Dlaczego nie można po prostu przedstawić półprzezroczystą pełny kontroler ekranu z bieżącym kontrolerem? Jeśli uważasz, że musisz dodać widok do okna, prawdopodobnie robisz to źle. – Sulthan

+0

Powinieneś zaimplementować to z niestandardowym przejściem, nie w ten sposób. –

Odpowiedz

27

To jest proste: .

Po prostu dodaj inny widok do window! I będzie tam, na górze pierwszego widoku, który dodałeś. Na przykład ten kod dodaje czarną i białą widok widok:

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) 

Można również dodać nowy widok jako widok sub pierwszego widoku dodanego:

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) 

Simple!

+1

Dziękuję za to, jednak czy istnieje sposób przeniesienia widoku z istniejącego kontrolera widoku do przodu widoków w oknie bez bezpośredniego dodawania go? – Kex

+0

@Kex Nie, jeśli o mnie chodzi. – Sweeper

+0

Dziękuję za wyjaśnienia. Działa dobrze. – Raja

13

Dla SWIFT 3 Użyj tego:

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