2017-10-11 59 views
10

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?

+0

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

+0

Tak, próbowałem i to ukrywałem, a kiedy kliknąłeś na dole, znowu to pokazuje. – pierreafranck

Odpowiedz

12

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.

+1

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. –

+0

@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

2
override func prefersHomeIndicatorAutoHidden() -> Bool { 
    return true 
} 

Przypuszczam, że możesz dodać tę metodę w swoim AppDelegate dla wskaźnika home hide na wszystkich kontrolerach ViewController.

enter image description here

2

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ź).

1

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 
}