Navigation bar를 customize하는 중 이슈가 생겨서 질문드립니다.

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • 인담
      참가자
      • 글작성 : 9
      • 답글작성 : 9

      안녕하세요.

      최근 프로젝트를 진행하면서 네비게이션 영역을 customize하던 중(Bar 색상 바꾸기) 원하는 결과가 안나와서 질문드립니다.

      프로젝트 초기에는 네비게이션 색상을 한번 고정하고 바꾸지 않는다고 생각하여 AppDelegate 파일에

      let standard = UINavigationBarAppearance()
      standard.backgroundColor = UIColor(named: “cMain”) //민트색

      let navigationBarAppearanceProxy = UINavigationBar.appearance()
      navigationBarAppearanceProxy.scrollEdgeAppearance = standard
      navigationBarAppearanceProxy.compactAppearance = standard
      navigationBarAppearanceProxy.standardAppearance = standard

      위 코드처럼 색상을 지정해두고 사용하고 있었는데

      생각하던 디자인을 바꾸던 중 네비게이션 색상을 바꾸게 되었습니다.
      그래서 일반적으로 navigation bar 색상을 바꾸는 코드인

      self.navigationController?.navigationBar.tintColor = .white

      로 바꿔도 해당 색상으로 바뀌지 않거나 상태바를 제외하고 바뀌는 등 원하는 결과가 나타나지 않았습니다.

      혹시 UINavigationBarAppearance를 사용하면 각 viewController에서 navigation bar를 customize하는게 불가능한 걸까요?

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 579

      appearance는 모듈 전역에 영향을 미치므로, 특정 영역에서 변경하려면 틴트 색상만 바꿔주는 것이 아니라 바 영역에 영향을 미치는 모든 것을 바꿔줘야 합니다.
      tintColor 뿐만 아니라 barTintColor도 변경해야 하고, 필요하다면 상태표시줄의 배경색도 직접 변경해야합니다.
      아래 두 링크를 참고해보면 힌트를 얻을 수 있지 않을까 합니다.

      • 인담
        참가자
        • 글작성 : 9
        • 답글작성 : 9

        감사합니다.

        그럼 Navigation Bar를 customize를 할일이 자주 있다면 appearance를 변경하는 거보단
        필요할 때마다 NavigationBar tint Color만 변경해주는게 낫겠군요.

        • 야곰
          키 마스터
          • 글작성 : 37
          • 답글작성 : 579

          네, 때에따라 그게 더 좋을수도 있죠 🙂

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

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom