Dziwnie się zachowuję, prezentując UIViewControllers modalnie w iOS 13. Nowy styl prezentacji, który widziałem w iOS 13, wygląda następująco:
Prezentujący kontroler widoku pojawia się za prezentowanym kontrolerem widoku. Jest również przesunięty w dół, aby naśladować „stos”
Tymczasem, prezentując kontrolery widoku za pośrednictwem mojej aplikacji, ciągle uzyskuję ten efekt:
Prezentujący kontroler widoku w ogóle się nie porusza podczas prezentacji nowego kontrolera widoku
Używam tego kodu, aby przedstawić ten kontroler widoku:
let controller = storyboard?.instantiateViewController(withIdentifier: "tutorial") as! TutorialController
controller.modalPresentationStyle = .pageSheet
controller.modalTransitionStyle = .coverVertical
present(controller, animated: true, completion: nil)
Oto moje pytanie: Zastanawiam się, dlaczego tak się dzieje i czy istnieje sposób na zaprezentowanie kontrolerów widoku w normalnym stylu iOS 13 (z cofnięciem prezentującego kontrolera widoku).
Z góry dziękuję!
ios
swift
user-interface
uiviewcontroller
ios13
CentrumGuy
źródło
źródło
controller.modalTransitionStyle = .coverVertical
a nawetcontroller.modalPresentationStyle = .pageSheet
(chociaż styl prezentacji byłby potrzebny, jeśli ten kod będzie również uruchamiany na iPadzie).Odpowiedzi:
Okazuje się, że problemem była moja hierarchia kontrolera widoku. Udało mi się to naprawić, czyniąc kontroler widoku prezentującego głównym kontrolerem widoku mojej aplikacji. Najpierw ustawiłem kontroler tła jako kontroler widoku root, wywołując
a następnie używając mojego poprzedniego kodu
Przedstawiłem kontroler widoku. Dziękujemy wszystkim, którzy próbowali pomóc!
źródło
Myślę, że problem można rozwiązać,
vc.modalPresentationStyle = .fullScreen
jeśli nie ma UINavigationController, w przeciwnym razie możesz użyć tych kodów w następujący sposób:ponieważ w iOS 13 jest to nowa funkcja, która Apple zmieniła domyślny styl prezentacji kontrolerów widoku na arkusz modalny z pełnego ekranu w iOS 12
źródło
Programowo:
Z scenorysu:
Otóż to. W ogóle nie trzeba grać z kontrolerem root lub oknem.
W celach informacyjnych odwiedź ten artykuł .
źródło
Możemy to zmienić na pasku narzędzi inspektora. Aby to osiągnąć: przejdź do piątej sekcji Inspektora Tollbar, a następnie zmień pole Prezentacja na Pełny ekran.
źródło
To powinna być jedyna właściwość, którą musisz ustawić
Szczegółowo w https://developer.apple.com/videos/play/wwdc2019/224/
źródło