iOS 개발/UIKit

[NavgiationController] 네비게이션바 투명하게 만들기

스닥 2021. 9. 14. 14:53

 

 

네비게이션바는 StroyBoard를 통해서는 반투명하게(translucent) 만 가능하다.

 

하지만 이렇게 되면, 네비게이션바를 사용하는 앱들은 애니메이션이나 색변화 등을 화면 전체에 가득차게 만들 수가 없다.

 

이를 해결하기 위해서는 해당 View의 뷰컨트롤러에서 navigationBar을 다루어주면 된다.

 

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.isTranslucent = true
}

 

 

그리고 이러한 적용을 해당 View의 NavigationBar에서만 적용시키고 싶다면, View가 꺼지게 될때의 경우도 고려해주면 된다.

 

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
    navigationController?.navigationBar.shadowImage = nil
}