그래서이 문제가 있었고 단순히 단일 대리자 기능을 구현하여 해결할 수있었습니다. 내 상태 표시 줄의 배경이 검은 색이므로 응용 프로그램의 UIStatusBarStyle은 .LightContent입니다. 장치 저장소에서 사진을 선택하기 위해 UIImagePickerController를 제시했을 때 상태 표시 줄에 문제가 없었습니다. 그러나 "카메라 롤"또는 "즐겨 찾기"와 같은 디렉토리를 클릭하면 효과적으로 탐색 스택을 밀면 상태 표시 줄이 사라집니다. 사진을 선택할 때 상태 표시 줄이 전혀 없었습니다. 다른 모달 뷰 컨트롤러를 닫을 때 배터리 만 있었으며 나머지 상태 표시 줄도 검은 색일 수 있습니다.
UIImagePickerController 확장과 같은 다른 솔루션을 시도했지만 Swift에서는 확장을 사용하여 재정의 할 수 없습니다. 그런 다음 UIImagePickerController의 서브 클래스를 작성하고 viewWillAppear ()에서 상태 표시 줄을 숨기고 viewWillDisappear에서 상태 표시 줄을 숨기려고했습니다. 슬라이드 애니메이션으로 상태 표시 줄 숨기기를 볼 수 있었지만 디렉토리를 선택할 때 상태 표시 줄이 보이지 않기 때문에 상태 표시 줄 숨기기가 해제되는 것을 볼 수 없었습니다. 다시, 녹색 배터리는 모달 뷰 컨트롤러를 닫을 때 보이지 않는 나머지 상태 표시 줄과 함께 돌아 왔습니다. 또한 prefersStatusBarHidden ()을 재정의하려고 시도했지만 해당 함수는 호출되지 않았으므로 시스템에서 prefersStatusBarHidden ()이 호출되도록 setNeedsStatusBarAppearanceUpdate ()를 호출하려고 시도했지만 여전히 호출되지 않았습니다. 또한, 델리게이트 메소드 navigationController willShowViewController에서 상태 표시 줄을 숨기도록 제안합니다. 다시 한 번,이 모든 것은 상태 표시 줄을 숨기고 문제를 해결하지 못합니다. 결과적으로 UIImagePickerController의 탐색 스택을 푸시하면 상태 표시 줄 스타일이 변경되는 것으로 보입니다. 문제를 완전히 해결하기 위해 확장 또는 하위 클래스 UIImagePickerController를 작성할 필요가 없었습니다. 델리게이트를 설정하고 상태 표시 줄 스타일을 동일하게 유지하기 만하면됩니다. 이 추가는 문제가 존재하지 않는 것처럼 만들었습니다. UIImagePickerController의 탐색 스택으로 푸시하면 상태 표시 줄 스타일이 변경되는 것 같습니다. 문제를 완전히 해결하기 위해 확장 또는 하위 클래스 UIImagePickerController를 작성할 필요가 없었습니다. 델리게이트를 설정하고 상태 표시 줄 스타일을 동일하게 유지하기 만하면됩니다. 이 추가는 문제가 존재하지 않는 것처럼 만들었습니다. UIImagePickerController의 탐색 스택으로 푸시하면 상태 표시 줄 스타일이 변경되는 것 같습니다. 문제를 완전히 해결하기 위해 확장 또는 하위 클래스 UIImagePickerController를 작성할 필요가 없었습니다. 델리게이트를 설정하고 상태 표시 줄 스타일을 동일하게 유지하기 만하면됩니다. 이 추가는 문제가 존재하지 않는 것처럼 만들었습니다.
let pickerController = UIImagePickerController()
pickerController.delegate = self
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false)
}