Skip to content

Instantly share code, notes, and snippets.

@Dev-MJ
Last active November 11, 2017 07:59
Show Gist options
  • Save Dev-MJ/144465ff1fbc95ee17fa670b31b30aa8 to your computer and use it in GitHub Desktop.
Save Dev-MJ/144465ff1fbc95ee17fa670b31b30aa8 to your computer and use it in GitHub Desktop.
UIStatusBar

navigatioinBarStyle

  1. 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들 배치)

  1. navigationBarStylechildViewControllerForStatusBarStyle 참고자료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로 설정된다.

navigationBarStylechildViewControllerForStatusBarStyle 에서

navigation bar가 hidden이라는 것은, navigationbar가 statusbar의 below에 존재하는지를 의미하는 것 같다. 참고자료

  1. navigationbar가 statusbar 아래에 존재하면,
    statusbar의 style을 navigationbar의 style이 조정할 수 있다.

  2. navigationBar가 statusBar 아래에 존재하지 않으면,
    statusBar의 style은 viewController에 의해 조정된다.

이렇게 되면 구현결과가 이상한 것이 설명이 된다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment