ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS) Status Bar, Navigation Bar 바꾸기
    iOS 2019. 6. 7. 19:38
    728x90

    오늘은 Status Bar 와 Navigation Bar 의 색을 바꿔보도록 하겠습니다!

    대부분 아시겠지만 우선 Status Bar와 Navigation Bar의 차이부터 알아보도록 할까요?

     

     

     

     

    둘의 차이가 보이시나요?

     

    사진에서는 비슷해 보이지만,

     

    StatusBar는 말 그대로 아이폰에서 시간이 표시되는 영역입니다.

     

    NavigationBar는 다음과 같이 navigation item들이 올 수가 있어요.

     

    중요한건 Navigation Bar가 있는 상태에서는 status bar를 덮어버리기 때문에 status bar를 변경해도 status bar의 변화가 보이지 않는습니다.

    때문에 Navigation bar가 있는 상태라면 아무리 statusbar를 바꿔도 효과가 없어 보인다는 점… 기억해주세요 ( 저처럼 시간낭비 하지 마시구요 ㅠㅠ )

    네 이제 어떻게 바꾸는지 방법을 알아보죠!

    Status bar

    status bar를 바꿔줄 때 두 가지 상황이 있을 수 있을거에요

    1. 앱 전체의 status bar를 변경
    2. 특정 컨트롤러의 status bar만 변경

     

    1. 앱 전체의 Status bar 변경 (deprecated)

    앱 전체의 status bar를 바꾸려면 AppDelegate.swift 에서

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            // Override point for customization after application launch.
            
          application.statusBarStyle = .lightContent
    
          return true
      }
    

    다음과 같이 application의 statusBarStyle을 바꿔줄 수는 있는데요,

    statusBarStyle은 iOS 9.0부터 deprecated 되었다고 해요.

    이 방법 대신 UIViewController에서 바꿔주는 방법을 권장하고 있답니다!

     

    2. 특정 컨트롤러에서 Status Bar 변경

    네 그럼 권장하는 정석 방법을 알아볼까요?

    아주 간단합니다. preferredStatusBarStyle 을 override 받으면 된답니다!

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    

     

    Naviagion Bar

    네 이제 Navigation Bar를 변경하는 방법을 알아볼게요.

    역시 아주 간단합니다. viewDidAppear 에서 다음과 같이 변경해줄 수 있어요.

    override func viewDidAppear(_ animated: Bool) {
            super.viewDidAppear(animated)
            
            navigationController?.navigationBar.barStyle = .black
        }
    

    여기서 barStyle 을 black으로 설정해주면 말 그대로 bar를 black으로 설정해주는거에요. 글씨도 그대로 내버려두면 안 보이겠죠? 그래서 시간 등 내부 글씨는 하얀색으로 바뀐답니다!

     

    그리고 한 가지 더! 

    Navigation Bar가 있으면 status bar가 안 보인다고 말씀드렸잖아요? 그렇다면 navigation bar를 없애는 방법도 알아봐야겠죠?

    매우 간단합니다. 앞의 barStyle을 설정해주던 것 대신 navigationController에서 setNavigationBarHidden 메서드를 사용해주면 된답니다!

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
    
        navigationController?.setNavigationBarHidden(true, animated: animated)
    }

     

     

    조금이라도 도움이 되셨기를 바라며 물러가겠습니다! 감사합니다!

     

     

    'iOS' 카테고리의 다른 글

    iOS) BoostCourse) PTJ1 MusicPlayer  (0) 2019.07.14
    iOS) Core Data document 뿌시기 - 1  (0) 2019.07.04
    iOS) Core Data Tutorial  (0) 2019.05.13
    iOS) Gradient 구현하기  (3) 2019.05.12
    iOS) Carousel 구현하기  (4) 2019.05.12

    댓글

Designed by Tistory.