- UIBarStyleDefault vs UIBarStyleBlack
-
UIBarStyleDefault : 주어진 view의 기본 스타일로 설정한다. (예: navigationBar는 흰 배경에 dark content)
-
UIBarStyleBlack : 주어진 view의 스타일을 검정 배경에 light content로 설정한다.
-
즉, navigationBarStyle은 navigationBar의 기본 스타일을 지정하는 것!
-
하지만 navigationBar의 appearance를 수정하면, 수정한 것이 우선순위로 적용된다.
- barTintColor : 유추되는 기본색(style에서 설정한 배경색)을 조정한다.(statusbar영역의 배경 포함)
- translucent: style의 반투명 유무.(tintcolor를 설정하면 NO로 적용됨)
- backgroundColor : navigationBar의 색(statusBar 제외)
-
- NavigationBar의 layout 구조
NavigationBar (backgroundColor가 영향을 미침)
ㄴㄴ backgroundView
ㄴㄴㄴㄴㄴ ImageView (backgroundImage가 설정됨.)
ㄴㄴㄴㄴㄴ UIVisualEffectView (barStyle, barTintColor가 영향을 미침. bgImage 설정하면 무시됨)
ㄴㄴ contentView (item들 배치)
- navigationBarStyle과 childViewControllerForStatusBarStyle 참고자료1 참고자료2
-
top-level navigation controller는 앱의 status bar 모양을 결정한다. 또한 navigation controller는
childViewControllerForStatusBarStyle
,childViewControllerForStatusBarHidden
을 구현하여 child view controller가 status bar 모양을 결정하게 할 수 있다. -
navigation bar가 hidden 상태인 경우, child view controller가
preferredStatusBarStyle
을 구현하면, navigation controller의childViewControllerForSstatusBarStyle
은 top child view controller의 barStyle을 따른다. -
navigation bar가 보이는 상태라면, navigation controller는 status bar style을 navigation bar의 barStyle에 따라 설정한다.
-
barStyle이
UIBarStyleDefault
이면 statusBar는 흰 배경에 dark content로 설정이 되며,UIBarStyleBlack
이면 statusBar는 검은 배경에 light content로 설정된다.
-
navigation bar가 hidden이라는 것은, navigationbar가 statusbar의 below에 존재하는지를 의미하는 것 같다. 참고자료
-
navigationbar가 statusbar 아래에 존재하면,
statusbar의 style을 navigationbar의 style이 조정할 수 있다. -
navigationBar가 statusBar 아래에 존재하지 않으면,
statusBar의 style은 viewController에 의해 조정된다.
이렇게 되면 구현결과가 이상한 것이 설명이 된다.