KWiOS
KWiOS0101
KWiOS
  • 분류 전체보기 (108)
    • Algorithm (41)
      • 이코테 (14)
      • 이코테 문제풀이 (21)
      • 프로그래머스 (6)
    • CS (1)
      • 모두를 위한 컴퓨터 과학(CS50 2019) (0)
    • iOS (15)
    • Swift (36)
      • Swift문법 (32)
      • 기타 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 6

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
KWiOS

KWiOS0101

NavigationController 사용시 status Bar Style 바꾸기
iOS

NavigationController 사용시 status Bar Style 바꾸기

2022. 12. 15. 20:07

진행하고 있는 프로젝트에서 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
}

1. 스토리보드 2. darkContent 3. lightContent

 

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()

    }
}

 

 

참고자료

https://www.google.com/search?q=swift+statusBarStyle&bih=730&biw=1194&rlz=1C5CHFA_enKR917KR917&hl=ko&ei=VPOaY8WAMZTFhwPM7pjQBQ&ved=0ahUKEwjF-sLbsfv7AhWU4mEKHUw3BloQ4dUDCA8&uact=5&oq=swift+statusBarStyle&gs_lcp=Cgxnd3Mtd2l6LXNlcnAQAzIFCAAQgAQyBAgAEB4yBggAEAgQHjIGCAAQCBAeOgoIABBHENYEELADSgQIQRgASgQIRhgAUI8IWJkPYK0SaANwAHgAgAFwiAHNAZIBAzEuMZgBAKABAqABAcgBCsABAQ&sclient=gws-wiz-serp#fpstate=ive&vld=cid:ca712606,vid:6AJ__9E928o 

 

🔎 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
    'iOS' 카테고리의 다른 글
    • iOS - 커스텀뷰를 테이블뷰와 비슷하게 사용하기
    • iOS - 텍스트의 특정 부분만 Bold 처리하기
    • navigationBar + scrollView를 함께 사용할때 top 여백 없애는 방법
    • UICollectionViewCompositionalLayout에서 Cell 동적 높이 적용하기
    KWiOS
    KWiOS

    티스토리툴바