iOS 15 NavigationBar 질문

태그: 

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • KM BANG
      참가자
      • 글작성 : 1
      • 답글작성 : 1
      1,100 포인트

      현재 iOS 15 대응을 하고 있는데요.

      기본 NavigationBar가 Black이고 status bar color는 white입니다.

      특정 ViewController에서 NavigationBar를 white로 바꾸고 있는데 여기서는 status bar가 black으로 설정이 되는데

      이전 화면으로 돌아갈때 다시 NavigationBar를 Black로 바꾸면 status bar도 black으로 계속 설정되어 보이지 않는 문제를 겪고 있습니다.

      AppDelegate에서 아래와 같이 작성하고

      if #available(iOS 13, *) {

                  let standardAppearance = UINavigationBarAppearance()

                  standardAppearance.configureWithOpaqueBackground()

                  standardAppearance.backgroundImage = UIImage()            

                  let compactAppearance = standardAppearance.copy()

                  compactAppearance.backgroundImage = UIImage()

                  UINavigationBar().standardAppearance = standardAppearance

                  UINavigationBar().scrollEdgeAppearance = standardAppearance

                  UINavigationBar().compactAppearance = compactAppearance

                  if #available(iOS 15.0, *) { // For compatibility with earlier iOS.

                      UINavigationBar().compactScrollEdgeAppearance = compactAppearance

                  }

              } else {

                  UINavigationBar.appearance().shadowImage = UIImage()

                  UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)

              }

       

      특정 ViewController에서 dismiss할때 viewWillDisappear에서

      if #available(iOS 15, *) {

                          let standardAppearance = UINavigationBarAppearance()

                          standardAppearance.configureWithOpaqueBackground()

                          standardAppearance.backgroundColor = .black

                          navigationController?.navigationBar.standardAppearance = standardAppearance

                          navigationController?.navigationBar.scrollEdgeAppearance = standardAppearance

                          UINavigationBar().barStyle = .black

                          self.navigationController?.navigationBar.tintColor = .white

                      } else {

                          self.navigationController?.navigationBar.barStyle = .black

                          self.navigationController?.navigationBar.backgroundColor = .black

                          self.navigationController?.navigationBar.barTintColor = .black

                          self.navigationController?.navigationBar.tintColor = .white

                      }

      이런식으로 코드를 작성했습니다.

      preferredStatusBarStyle를 사용해도 status bar 색이 돌아오지 않아서 질문드립니다.

      해결 방법이 있을까요..?

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 534
      18,550 포인트

      저도 확실히 몰라서 생각나는대로 말해보는건데요.

      • 보일 뷰 컨트롤러의 viewWillAppear에서도 시도해보셨나요?
      • AppDelegate 말고 SceneDelegate에서 시도해보셨나요?
      • KM BANG
        참가자
        • 글작성 : 1
        • 답글작성 : 1
        1,100 포인트

        현재 프로젝트에는 SceneDelegate를 사용하지 않고 있습니다.

        특정 ViewController에서 viewWillAppear에  NavigationBar를 white로 변경해주는 코드를 작성했습니다.

        override func viewWillAppear(_ animated: Bool) {

                super.viewWillAppear(animated)

                

                self.navigationController?.navigationBar.barStyle = .default

                self.navigationController?.navigationBar.tintColor = .dark

                

                if #available(iOS 13, *) {

                    let standardAppearance = UINavigationBarAppearance()

                    standardAppearance.configureWithDefaultBackground()

                    standardAppearance.backgroundColor = .white

                    standardAppearance.shadowColor = .clear

                    navigationController?.navigationBar.standardAppearance = standardAppearance

                    navigationController?.navigationBar.scrollEdgeAppearance = standardAppearance

                } else {

                    self.navigationController?.navigationBar.backgroundColor = .clear

                    self.navigationController?.navigationBar.barTintColor = .white

                    self.navigationController?.navigationBar.topItem?.title = “”

                }

        }

        여기서는 status bar도 black으로 잘 변경되는데 이전화면으로 돌아갈때 status bar 색이 바뀌질 않네요 ..ㅠ

1 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 260-27-00477
통신판매업 신고번호 : 제 2020-충북청주-0663 호
고객센터 : 카카오톡채널 @yagom