진행하고 있는 프로젝트에서 NavigationController를 사용하고 있는데 StatusBarStyle을 변경하려고 했지만 변경되지 않아 여러 방법을 찾아보던중 NavigationController 클래스를 생성하여 적용하는 방법을 찾게되어 포스팅하게 되었다.
1. NavigationController 사용하지 않았을 때
먼저 NavigationController를 사용하지 않았을때는 아래와 같이 디바이스의 디스플레이 모드가 라이트모드이거나 다크모드일때 아래와 같이 검정색, 흰색으로 보여진다.

StatusBarStyle을 변경하고 싶은 ViewController에서 preferredStatusBarStyle을 오버라이드 해주고 변경할 StatusBarStyle을 반환해주면 된다.
class SecondViewController: UIViewController {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
코드로 StatusBarStyle을 변경하는 방법
// 디스플레이 모드에 따라서 설정 (라이트 모드, 다크 모드)
override var preferredStatusBarStyle: UIStatusBarStyle {
return .default
}
// 상태바 Content색상 흰색
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
// 상태바 Content색상 검정색
override var preferredStatusBarStyle: UIStatusBarStyle {
return .darkContent
}

2. NavigationController 사용할 때

먼저 NavigationController 클래스를 생성하고, Storyboard에서 NavigationController에 해당 클래스 파일을 등록해준다.
생성한 클래스에서 childForStatusBarStyle를 오버라이드 해주고 topViewController를 반환 해준다.
class NavigationController: UINavigationController {
override var childForStatusBarStyle: UIViewController? {
return topViewController
}
}
그 다음 StatusBarStyle을 변경해줄 ViewController에서 perferredStatusBarStyle을 오버라이드 해주고 lightContent나 darkContent를 반환해주면 된다.
class SecondViewController: UIViewController {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
참고자료
🔎 swift statusBarStyle: Google 검색
www.google.com
'iOS' 카테고리의 다른 글
| iOS - 커스텀뷰를 테이블뷰와 비슷하게 사용하기 (0) | 2023.07.11 |
|---|---|
| iOS - 텍스트의 특정 부분만 Bold 처리하기 (0) | 2023.06.11 |
| navigationBar + scrollView를 함께 사용할때 top 여백 없애는 방법 (2) | 2022.12.01 |
| UICollectionViewCompositionalLayout에서 Cell 동적 높이 적용하기 (0) | 2022.11.01 |
| UINavigationBar TitleView Swipe-Back 했을때 Width 커지는 현상 (0) | 2022.10.24 |