네비게이션 바를 추가 하면 위와 같이 네비게이션바의 색상과 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인 디자인을 추가 하지 않는한 정상적으로 동작 한다.