티스토리 뷰

Swift

navigationBar 하단 border 핸들링.

진태우 2018. 4. 6. 17:07

navigationBar의 배경과 border를 안보이게 하고 싶은 경우, 아래와 같이 작성해 주면 된다.

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
}

background는 navigationBar의 배경색을 설정하는 속성이고, 

shadowImage는 border의 이미지를 설정하는 속성이다.


반대로 navigationBar의 배경과 border를 보이게 하거나 색을 변경하고 싶은 경우를 알아보면.
background, shadowImage 속성들이 이미지이기 때문에 원하는 색을 이미지로 변환시키는 작업이 필요하다.

아래는 UIColor 클래스에 line 이미지를 만드는 makeLineImage 함수를 확장시킨 코드이다.
extension UIColor {
    func makeLineImage() -> UIImage {
        UIGraphicsBeginImageContext(CGSize(width: 1, height: 1))
        let context = UIGraphicsGetCurrentContext()
        self.setFill()
        context?.fill(CGRect(x: 0, y: 0, width: 1, height: 1))
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image!
    }
}


위 코드 내용은 이미지 resizing 및 cropping에 대해 정리할 때 알아볼 예정이다.

구현한 함수를 사용하여 navigationBar의 background, shodowImage를 추가하면 된다.

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    self.navigationController?.navigationBar.shadowImage = UIColor.red.makeLineImage()
    self.navigationController?.navigationBar.setBackgroundImage(UIColor.clear.makeLineImage(), for: .default)
}



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함