UINavigationController의 탐색 모음을 숨김으로써 전체 화면 모드로 들어가는 코드가 있습니다. 전체 화면으로 전환 할 때 부드러운 애니메이션 확대/축소 효과를 원합니다. 나는 setNavigationBarHidden(_:animated:)을 사용한다. 지금까지 iOS 11에서도 모든 작업이 원활하게 진행되었지만 iPhone X에서는 애니메이션이 제대로 작동하지 않습니다. 숨어있을 때 애니메이션이없고 탐색 막대가 사라집니다. 숨기기 해제시 애니메이션이 적용되지만 탐색 막대의 콘텐츠 영역이 축소되는 속도보다 느린 속도로 탐색 막대가 표시되므로 애니메이션 중에 탐색 막대 영역을 통해 못 생기는 검정색 배경이 표시됩니다.setNavigationBarHidden 애니메이션이 iPhone X에서 예상대로 작동하지 않습니다.
간단한 테스트 앱에서 다시 만들 수 있습니다. UINavigationController에 포함 된 UIViewController가 있습니다.
스토리 보드
- UINavigationController가 탐색 막대 : 스타일 == 블랙; 반투명 OFF
- UIViewController : 가장자리 확장 : 모든 옵션이 해제됩니다.
제가 생각할 수있는 Adjust Scroll View Insets와 Extend Edge의 모든 조합을 시도했지만 별 차이가 없었습니다. 귀하의 경우에는
코드
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
setFullScreen(on: fullScreen, animated: animated)
}
override var prefersStatusBarHidden: Bool
{
return fullScreen
}
override var preferredStatusBarStyle: UIStatusBarStyle
{
return .lightContent
}
@IBAction func onToggleNavBarVisibility(_ sender: Any) {
if let navBarHidden = self.navigationController?.isNavigationBarHidden {
// Toggle the state
fullScreen = !navBarHidden
setFullScreen(on: fullScreen, animated: true)
}
}
private func setFullScreen(on : Bool, animated : Bool) {
self.navigationController?.setNavigationBarHidden(on, animated: animated)
self.setNeedsStatusBarAppearanceUpdate()
}
은 나를 더 문제를 이해했다. 코드가 작동하는 이유는 prefersStatusBarHidden 무시를 생략했기 때문입니다. 이것이 근본 원인 인 것 같습니다. 정말 문제는 "setNavigationBarHidden 애니메이션이 iPhone X에서 prefersStatusBarHidden과 작동하지 않습니다."입니다. PrefersStatusBarHidden 오버라이드를 주석 처리하면 코드가 작동하지만 물론 전체 화면 효과를 얻으려면 숨기려고합니다. (원래 코드는 iPhone X와는 다른 모든 iPhone 시뮬레이터에서 잘 작동합니다.) – Ben
@Ben, EDIT를 참조하십시오. 필요에 따라 작동하며'prefersStatusBarHidden'을'UIApplication.shared.isStatusBarHidden = on'으로 바꿉니다.그러나 iPhone-X의 상태 표시 줄을 유지하는 것이 좋습니다. 사람들이 유용하다고 생각하는 정보가 상태 표시 줄에 표시됩니다. – Jack
재미 있고 분명 도움이됩니다. 하지만 (1) 상태 표시 줄 사라짐이 애니메이션으로 나타나지 않고 'UIApplication.shared.setStatusBarHidden (on, with : : fade)'를 사용하면 '비추천 경고'가 표시됩니다. (2) '컨트롤러 기반 상태 표시 줄보기'는 Info.plist에서 요즘으로 간주됩니다. (3) 재현 애니메이션은 여전히 적절하지 않습니다. 나는 버그 보고서가오고 있다고 느낀다 ... iPhone X의 사진 앱을 사용하는 경우, 상태 표시 줄이 전체 화면 모드로 숨겨져 있으므로 나는 일시적인 프리젠 테이션 이유로 그것을 할 수 있다고 생각한다. – Ben