UIStatusBar 제어
UIViewController 에 preferredStatusBarStyle 프로퍼티가 있음
설정 가능 값은 ‘default’, lightContent ‘default’ 검은 색 글자 보임 lightContent 흰색 글자 보임
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
숨기고 싶을 때
override var prefersStatusBarHidden: Bool {
return true
}
animation
var isStatusBarHidden: Bool = false
override var prefersStatusBarHidden: Bool {
return self.isStatusBarHidden
}
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return .fade
}
변경된 속성을 적용하는 방법
self.setNeedsStatusBarAppearanceUpdate()
//
self.isStatusBarHidden = !self.isStatusBarHidden
UIView.animate(withDuration: 0.3, animations: {
self.setNeedsStatusBarAppearanceUpdate()
})
안되는데…확인
Info.plist 파일의 내용은 다음과 같이 하여 줍니다.
- View controller-based status bar appearance : YES
UIApplication.shared.statusBarView?.backgroundColor = UIColor.clear
navigationcontroller 등 안에 있는 VC에서 위처럼 아무리해도 안 바뀜
self.navigationController?.navigationBar.barStyle = .default // .black
iOS 13부터 다~ 달라짐
높이 구하기
let height = view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0