이번 프로젝트를 진행함에 있어서 커스텀 네비게이션바가 아니라 애플에서 제공하는 기본 네비게이션바를 이용하기로 하였다
위와 같은 과정에 있어서 모든 화면에 네비게이션바의 세팅을 위한 공통코드가 추가되었고 우리는 이를 해결하기위한 방법으로 UINavigationBarAppearance라는 것을 알게되었다
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground() // 반투명 색상
appearance.backgroundColor = .background // 배경색
appearance.titleTextAttributes = [
NSAttributedString.Key.foregroundColor: UIColor.black, // 텍스트 색상
NSAttributedString.Key.font: UIFont.h4 // 폰트
]
UINavigationBar.appearance().tintColor = .black
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance
// 내비바 하단 회색선 제거
appearance.shadowColor = .clear
appearance.shadowImage = UIImage()
기존에 알고있지않은 정보였는데 애플앱에서는 기본적으로 백 제스처를 통해서 화면이 pop되는 동작이 존재한다
아마 애플 핸드폰을 사용하는 사용자에게 있어서 이 제스처는 당연한 동작일 수 있지만 실제 앱을 개발하다보면 이 제스처는 기본적으로 제공받지못한다
navigationController?.interactivePopGestureRecognizer?.delegate = self
extension BaseNavigationController: UIGestureRecognizerDelegate {
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
viewControllers.count > 1
}
}