티스토리 뷰
안녕하세요 :) Zedd입니다.
사실 iOS개발이 익숙하지 않다면 엄청 헷갈릴만 한 NavigationBar에 관련된 다양한 코드들...이번기회에 싹 정리해보려고 합니다.
틀린 부분이나 개선해야 할 코드들이 있다면 댓글이나 PC화면 오른쪽 하단에 있는 채널서비스를 통해 메세지 주시길 바랍니다 꼭!!!!! XD
● 숨기기
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.isNavigationBarHidden = true
또는 //self.navigationController?.navigationBar.isHidden = true
}
위 코드는 해당 navigationController로 묶인 모든 ViewController들의 navigationBar를 숨기므로 disAppear에서 다시 false로 해줘야함.
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.isNavigationBarHidden = false
또는 //self.navigationController?.navigationBar.isHidden = false
}
※주의사항
만약 내가
self.navigationController?.isNavigationBarHidden = true
로 NavigationBar를 숨겼다면,
self.navigationController?.isNavigationBarHidden = false
로 다시 보여주도록 한다.
self.navigationController?.navigationBar.isHidden = false
이걸로 false를 주면, false를 줬음에도 불구하고 NavigationBar가 안보인다.
즉, 짝꿍을 맞춰주란 소리임.
● 색깔 바꾸기
color프로퍼티가 3개가 있는데, 저는 이게 항상 헷갈렸어요,............글을 쓴 이유기도 하고...좀만 안쓰면 아..ㅇㅣ게....하면서 구글링했는데 이제 다시는 구글링 안하도록 하겠
- tintColor : The tint color to apply to the navigation items and bar button items.
navigation items 과 bar button items에 적용되는 색깔임.
self.navigationController?.navigationBar.tintColor = .red
red로 줘보자. 그렇다면 tintColor는 navigation items 과 bar button items에 적용되는 색깔이니까 빨간색이 나올 것.
저 x는 이미지 assets인데,
원래 검정색이다. 빨간색으로 나오게 하고 싶지 않다면
렌더링 모드를 original image로 주면 된다.
- barTintColor: The tint color to apply to the navigation bar background.
NavigationBar background로 적용되는 색깔. isTranslucent를 false로 설정하지 않는 한 기본적으로 반투명임.
self.navigationController?.navigationBar.barTintColor = .gray
red는 너무 눈아파서;; gray로 해보겠음
view의 background도 똑같은 gray로 지정해보겠음
똑같은 gray지만 색깔이 뭔가 다른듯한 느낌을 받을 수 있음.
이유는 바로 위에서 언급했듯이, " isTranslucent를 false로 설정하지 않는 한 기본적으로 반투명임." <- 때문
self.navigationController?.navigationBar.isTranslucent = false
를 지정해주면
똑같아짐.
비교짤.
마지막, backgroudColor.
엥...방금 barTintColor로 NavigationBar Background지정한거 아님?..
ㅇㅇ맞음
이 backgroundColor는
self.view.backgroundColor = .gray
여기서 사용되는 backgroundColor와 같음.
바로 view의 backgroundColor임.
self.navigationController?.navigationBar.backgroundColor = .gray
위 코드는
이렇게 됨.
이렇게 ㅇㅇ
barTintColor와 비교해보면,
요게 barTintColor.
암튼 navigationBar의 color는 다 봐따
● navigationBar bottom bolder line.
navigationBar와 view를 나누는 저 line...
- 없애고 싶을 때.
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = false
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.clipsToBounds = true
전부 아래그림과 같이
선이 없어짐.
위 3코드 중 2번째 코드.
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = false
이거는 navigationBar에 barTintColor를 따로 줘야함. 안주면
이렇게 됨.
나머지 2개(첫번째, 세번째)는 따로 barTintColor를 주지 않아도
view의 색깔에 맞춰짐.
가능한 이유는
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
때문.
● title 색깔 바꾸기.
이건..넣을까 말까 고민했는데..그냥 넣..
self.title = "Zedd"
기본적으로 검정색.
self.title = "Zedd"
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.green]
'iOS' 카테고리의 다른 글
iOS12 ) Notification (2) | 2018.09.13 |
---|---|
iOS ) Decodable (2) | 2018.08.29 |
iOS 12 Beta 설치 방법 (0) | 2018.07.31 |
iOS ) UIStatusBar (5) | 2018.07.28 |
iOS ) windowLevel (0) | 2018.07.28 |
- np-complete
- 회고
- Swift
- github
- UIBezierPath
- WWDC
- 피아노
- swift array
- IOS
- fastlane
- Combine
- swift sort
- WKWebView
- 스위프트 문법
- Accessibility
- iOS delegate
- FLUTTER
- actor
- swift 공부
- Xcode
- swift tutorial
- 스위프트
- np-hard
- swift3
- ios 13
- 제이슨 파싱
- swift delegate
- Git
- WidgetKit
- SwiftUI
- Total
- Today
- Yesterday