네비게이션바는 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
}
'iOS 개발 > UIKit' 카테고리의 다른 글
[Swift] 앱 안에서 메일 보내기 (0) | 2021.11.20 |
---|---|
[GestureRecognizer] Gesture 잘 사용하기 - 동시에 여러 gesture 사용하기, 주의점 (0) | 2021.11.17 |
[UICollectionView] View를 하나씩 넘기기, 여러개씩 넘기기 (0) | 2021.11.17 |
[UIImageView] image 색 변경하기 (0) | 2021.11.09 |
[UITableVIew] automaticDimension 이 되지 않을때 (0) | 2021.10.18 |
[UIView] view를 fade in, fade out 시키는 방법 (0) | 2021.09.21 |
[Animation] animation play 중간에 값 변경하는 몇가지 방법 (0) | 2021.09.21 |
[Swift] viewcontroller에서 앱이 background에서 foreground 변환 감지 (0) | 2021.09.20 |