[Swift] statusBarStyle 제어권 관리하기

민경준·2021년 11월 8일
1

그동안 잘 작동했다고 믿고있엇던 코드에 오류가 있었다.
새로운 ViewController를 Present 할 때
해당 ViewController에서 statusBar Style을 오버라이드시켜
아래처럼 변경을 해주고 있엇는데 오늘 확인해 보니 변경이 안되고 있엇다.

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}
override var prefersStatusBarHidden: Bool {
    return false
}

처음에는 iOS15 업데이트로 인한 버그인줄 알았는데
아래의 속성을 통해서 statusBarStyle에 대한 제어권을
다음 뷰컨트롤러에 넘겨줘야 제대로 작동을 한다고 한다.

viewController.modalPresentationCapturesStatusBarAppearance = true

이렇게 설정을 주고나면 원래 뷰컨트롤러가 갖고있던 statusBar에 대한 제어권을 다음 뷰컨트롤러에게 전달을 하게 되고 그 뷰컨트롤러가 제어권을 받아 원하는 스타일을 제어할 수 있게 되는것이다.

해당 속성에 대한 설명을 읽어보자

설명에는 modalPresentStyle을 FullScreen으로 하는 경우에만 자동으로 넘겨준다고 되어있다. 다른 경우에는 이 속성값을 건드려서 제어권을 넘겨줘야하는 모양이다.
(근데 난 overFullScreen 속성을 쓰는데 다른건가...?)

해당 속성으로 해결하여 다행이지만 마음 한구석엔 찜찜함이 남았다...

profile
iOS Developer 💻

0개의 댓글