2017-10-11 17 views
10

위에서 아래로 전체 화면을 차지하는보기 컨트롤러가 있습니다. iPhone X 기기의 화면 하단에 홈 막대 표시기를 숨기고 싶습니다.iPhone X보기 컨트롤러의 홈 표시기 숨기기

어떻게하면 iOS 11에서이 작업을 수행 할 수 있습니까?

+0

당신의 window?.rootViewControllerUITabBarController 또는 UINavigationController 경우, 그냥 상속 다음과 같이 두 가지 기능을 추가 그 지역에서 여전히 집으로 돌아갈 수 있습니다. – Vlad

+0

예. 시도해 보았습니다. 숨기고 숨긴 부분을 클릭하면 다시 나타납니다. – pierreafranck

답변

12

당신은 그것을 달성하기 위해 뷰 컨트롤러에 prefersHomeIndicatorAutoHidden()를 오버라이드 (override) : 당신은 아이폰 OS에서 전체 화면 응용 프로그램에서, 바닥에서 제어 센터의 표시와 같은 동일한 슬라이드 할 때 명심

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

가 표시됩니다 < = 10. 제스처를 활성화하려면 실제로 두 번 슬라이드해야합니다.

+1

하지만 두 번 슬라이드가 작동하지 않습니다. 에뮬레이터에서 테스트 중입니다. 숨겨진 경우에도 단일 화면에서 홈 화면으로 이동합니다. –

+0

@smitpatel _ 자동 숨김 기능을 사용하는 경우 사용자가 몇 초 동안 화면을 터치하지 않으면 표시등이 점멸합니다. 사용자가 화면을 다시 터치하면 다시 나타납니다. 이 동작은 비디오 또는 사진 슬라이드 쇼 재생과 같은 수동 시청 환경에서만 사용 가능해야합니다. – Jack

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

이 방법을 모든 ViewController의 숨기기 표시기에 대한 AppDelegate에 추가 할 수 있다고 가정합니다.

enter image description here

2

다른 대안이있다. 표시기가 어두워지는 동작을 찾으면 사용자가 위로 스 와이프하여 활성화하고 다시 스 와이프하면 홈 액션이 호출됩니다 (IE, 두 개의 스 와이프가 호출되어야 함). 대답은 다음과 같습니다. iPhone X home indicator behavior . 그것의 짧은 당신의 UIViewController에 무시하는 것입니다

override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge { 
    return .bottom 
} 

prefersHomeIndicatorAutoHidden 만 표시를 숨 깁니다하지만 제스처를 억제하지 않습니다.

그리고 내가 원하는 것을 얻을 수 있습니다 (귀하의 의견을 정확하게 이해하면 질문과 선택한 대답이 다른 대답을 암시하는 것처럼 보입니다).

1

난 단지 바 있지만, 슬쩍 제스처 의지를 숨기기 위해 노력하고 상상, 나는 그것이 가능해야한다고 생각,

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

//@available(iOS 11, *) 
override func childViewControllerForHomeIndicatorAutoHidden() -> UIViewController? { 
    return nil 
}