2015-10-13 22 views
68

Wiem, że ten temat jest dość popularny, ale jestem małym inicjalnym problemem w języku programowania, faktem jest, że nadal nie rozumiem, gdzie umieściłem kod. Cóż, powiem całą sprawę:Swift Modal View Kontroler z przezroczystym tłem

enter image description here

próbuję uczynić modalne Swift w trochę inny od normalnego: Klikając na przycisk, zostanie wyświetlona ViewController (po modalnej typu) na ekranie, ale z przezroczystym tłem. Wyświetlony zostanie tylko niebieski widok z etykietą. Po wyświetleniu tego kontrolera ViewController jest on przezroczysty, ale zaraz po zakończeniu przejścia pozostanie na czarnym tle. Dezaktywował już opcję opaque i przetestował niektóre opcje, ale nic z tego nie rozwiązało.

Niektórzy mogą mi pomóc?

Wideo jest testem w symulatorze na obudowie (https://www.youtube.com/watch?v=wT8Uwmq9yqY).

Zaczynam z szybkich, a ja wciąż dość utracone z jak programować w Xcode, przeczytałem odpowiedzi na pytanie, które ma następujący kod, aby rozwiązać ten:

self.presentingViewController.providesPresentationContextTransitionStyle = YES; 
self.presentingViewController.definesPresentationContext = YES; 
modal.modalPresentationStyle = UIModalPresentationOverCurrentContext; 

Gdzie Umieściłem ten kod?

+0

Zobacz: http://stackoverflow.com/questions/27669699/transparent-background-for-modally-presented-viewcontroller – joern

+0

Muszę zachować odstęp między przyciskiem a ViewController (modalny)? ponieważ bez następnej nic nie przedstawia, z następującymi funkcjami na czarnym tle. –

+0

Skorzystaj z tego: http://stackoverflow.com/questions/26598099/present-uiviewcontroller-as-a-modal-with-transparent-background?rq=1 –

Odpowiedz

172

Można to zrobić tak:

w głównym widoku kontrolera:

func showModal() { 
    let modalViewController = ModalViewController() 
    modalViewController.modalPresentationStyle = .overCurrentContext 
    presentViewController(modalViewController, animated: true, completion: nil) 
} 

W swojej modalnej kontrolera widoku:

class ModalViewController: UIViewController { 
    override func viewDidLoad() { 
     view.backgroundColor = UIColor.clearColor() 
     view.opaque = false 
    } 
} 

Jeśli pracujesz z storyboardem:

Wystarczy dodać Storyboard Segue z Kind zestaw do Present Modally do modalnej kontrolera widoku i na tym kontrolerze widoku ustawić następujące wartości:

  • tła = jasny kolor
  • Drawing = Odznacz nieprzezroczystej wyboru
  • Prezentacja = Nad obecnym kontekście

Jak Crashalot wskazał w swoim komentarzu: Upewnij się, że segue używa tylko Default zarówno dla Presentation i Transition. Korzystanie z Current Context dla Presentation powoduje, że modalny zmienia kolor na czarny, zamiast pozostać przezroczysty.

+0

Czy używasz scenorysów? Zobacz moją zredagowaną odpowiedź.Po prostu próbowałem i działa – joern

+0

Po edycji postępuj zgodnie z jego instrukcjami i działało poprawnie. Dziękuję bardzo! –

+0

Nie ma problemu, cieszę się, że pomogło :-) – joern

Powiązane problemy