2016년 9월 26일 월요일

UINavigationbar 1px bottom line 제거 하기

http://stackoverflow.com/questions/19226965/how-to-hide-ios7-uinavigationbar-1px-bottom-line

네비게이션 바를 추가 하면 위와 같이 네비게이션바의 색상과 view의 색상이 일치 할때도 
1px  라인이 하나 있다.

이것을 제거 하려면 어떻게 해야 하는가?


stackoverflow에 아름다운 방법이 있었다.

저 밑줄의 view를 찾아 내서 hidden 시켜 버리는 것이다.

private var shadowImageView: UIImageView?
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        
        if shadowImageView == nil {
            shadowImageView = findShadowImage(under: navigationController!.navigationBar)
        }
        shadowImageView?.hidden = true
    }
    
    override func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)
        
        shadowImageView?.hidden = false
    }
    
    private func findShadowImage(under view: UIView) -> UIImageView? {
        if view is UIImageView && view.bounds.size.height <= 1 {
            return (view as! UIImageView)
        }
        
        for subview in view.subviews {
            if let imageView = findShadowImage(under: subview) {
                return imageView
            }
        }
        return nil
    }


UIImage 이면서 height 가 1인 view를 찾아서 그것을  viewWillAppear() 메서드에서 hidden을 시키는... UIImage height가 1인 디자인을 추가 하지 않는한 정상적으로 동작 한다.


댓글 없음: