Mam kontroler widoku, który zajmuje cały ekran od góry do dołu. Chciałbym ukryć wskaźnik ekranu głównego na dole ekranu na urządzeniach iPhone X.iPhone X ukryj wskaźnik domowy na kontrolerze widoku
Jak mogę to zrobić w iOS 11?
Mam kontroler widoku, który zajmuje cały ekran od góry do dołu. Chciałbym ukryć wskaźnik ekranu głównego na dole ekranu na urządzeniach iPhone X.iPhone X ukryj wskaźnik domowy na kontrolerze widoku
Jak mogę to zrobić w iOS 11?
powinny przesłonić prefersHomeIndicatorAutoHidden()
w kontrolerze widoku, aby to osiągnąć:
override func prefersHomeIndicatorAutoHidden() -> Bool {
return true
}
Należy pamiętać, że będzie on wyświetlany po przesunięciu od dołu, tak samo jak wskaźnik centrum sterowania w app pełnego ekranu w iOS < = 10. Będziesz musiał dwukrotnie przesunąć, aby aktywować gest.
Ale ten slajd dwa razy nie działa, testuję w emulatorze. Nawet jeśli jest ukryty, po jednym przesunięciu przechodzi do ekranu głównego. –
@smitpatel _Gdy automatyczne ukrywanie jest włączone, wskaźnik zanika, jeśli użytkownik nie dotknął ekranu przez kilka sekund. Pojawi się ponownie, gdy użytkownik ponownie dotknie ekranu. To zachowanie powinno być włączone tylko w przypadku pasywnych doświadczeń oglądania, takich jak odtwarzanie filmów lub pokaz slajdów ze zdjęciami_ – Jack
Wykonaj -(BOOL)prefersHomeIndicatorAutoHidden
w swoim UIViewController
i zwróć YES
.
Czytaj więcej https://developer.apple.com/documentation/uikit/uiviewcontroller/2887510-prefershomeindicatorautohidden.
Ustawienie tego ustawienia na "NIE" pozwala uzyskać * przeciwne *. – the4kman
Ups, oczywiście, tak. Edytowane, dzięki. – DrMickeyLauer
Jest jeszcze inna alternatywa. Jeśli szukasz zachowania, w którym wskaźnik się ściemnia, to po przesunięciu użytkownika aktywuje się, a gdy przesuwają w górę, wywoływana jest akcja domowa (IE, potrzebne są dwa przesuwania, aby wywołać), następnie odpowiedź jest następująca: iPhone X home indicator behavior . Krótka z nim jest, aby zastąpić na UIViewController:
override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
return .bottom
}
prefersHomeIndicatorAutoHidden
tylko ukrywa wskaźnik, ale nie będzie tłumić gest.
I dostaniesz to, czego chcesz (Jeśli dobrze zrozumiem twoje komentarze - twoje pytanie i wybrana odpowiedź wydają się sugerować inną odpowiedź).
Jeśli window?.rootViewController
jest UITabBarController
lub UINavigationController
, po prostu odziedziczyć je i dodać dwie funkcje w następujący sposób
override func prefersHomeIndicatorAutoHidden() -> Bool {
return true
}
//@available(iOS 11, *)
override func childViewControllerForHomeIndicatorAutoHidden() -> UIViewController? {
return nil
}
myślę, że powinno być możliwe, wyobrażam sobie, że działa tylko ukryć pasek ale gest machnięcia będzie nadal pracują w tej okolicy, aby wrócić do domu. – Vlad
Tak, próbowałem i to ukrywałem, a kiedy kliknąłeś na dole, znowu to pokazuje. – pierreafranck