Danny의 iOS 컨닝페이퍼
article thumbnail

상태창(StatusBar) 색상 변경 방법

 

 

1. Project --> General --> Deployment Info 찾아가기

 

 

2. Status Bar Style을 원하는 색상으로 선택

Dark Content : 검은색으로 표시됨

Light Content : 흰색으로 표시됨

 

 

3. Info.plist 설정하기

View controller-based status bar appearance를 추가한 뒤, Value값을 No로 설정하기

 

 

 

코드로 변경하는 방법

 

View controller-based status bar appearance의 기본값은 YES를 갖고 있습니다.

 

그러므로 만약, Info.plist에서 생성을 해줬다면, 값을 YES로 변경하거나 제거해 주세요.

 

ViewController에서 preferredStatusBarStyle를 재정의 해주면, 바로 변경 됩니다!

// 흰색 상태바
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

// 검정 상태바
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .darkContent
}

 

 

네이비게이션 컨트롤러에서 적용법

 

이상하게, 네비이게이션 컨트롤러에서 코드로 스타일을 변경해줘도 동작을 하지 않네요.

 

찾아보니, UINavigationBar내부의 appearance에는 barStyle이라는 속성이 있더라고요.

 

한번, barStyle접근하여 속성을 변경해 봅시다.

// 상태창을 검은색으로 표시
navigationBar.barStyle = .default

// 상태창을 흰색으로 표시
navigationBar.barStyle = .black

// 전역으로 스타일 변경
UINavigationBar.appearance().barStyle = .default
UINavigationBar.appearance().barStyle = .black

 

변경이 됩니다!

default(좌), black(우)

 

 

여기서, 한 가지 문제점이 있는데..

 

만약, UINavigationBarAppearance를 통해

standardAppearance, compactAppearance, scrollEdgeAppearance 설정을 하게 되면,

또, 적용이 안되네요....... 🫠

 

참고로 1번 방법(plist)으로 하면 동작 합니다.

 

혹시 아시는 분 댓글 부탁드립니다..

 

 

부족한 설명이지만, 조금은 이해 가셨나요?

틀린 내용이 있다면 언제든지 지적해 주시면 감사히 받겠습니다. 🫠
읽어주셔서 감사합니다 😃

 

 

참고

Customizing Your App’s Navigation Bar

Customizing the appearance of UINavigationBar

Legacy customizations

https://sanzeevgautam.medium.com/preferredstatusbarstyle-not-called-in-swift-eefae1f10262

 

 

반응형
profile

Danny의 iOS 컨닝페이퍼

@Danny's iOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!