How to hide UINavigationBar 1px bottom line

后端 未结 30 2704
不知归路
不知归路 2020-11-22 08:58

I have an app that sometimes needs its navigation bar to blend in with the content.

Does anyone know how to get rid of or to change color of this annoying little ba

30条回答
  •  不知归路
    2020-11-22 09:25

    Wanted to add the Swift version of Serhii's answer. I created a UIBarExtension.swift with the following:

    import Foundation
    import UIKit
    
    extension UINavigationBar {
        func hideBottomHairline() {
            self.hairlineImageView?.isHidden = true
        }
    
        func showBottomHairline() {
            self.hairlineImageView?.isHidden = false
        }
    }
    
    extension UIToolbar {
        func hideBottomHairline() {
            self.hairlineImageView?.isHidden = true
        }
    
        func showBottomHairline() {
            self.hairlineImageView?.isHidden = false
        }
    }
    
    extension UIView {
        fileprivate var hairlineImageView: UIImageView? {
            return hairlineImageView(in: self)
        }
    
        fileprivate func hairlineImageView(in view: UIView) -> UIImageView? {
            if let imageView = view as? UIImageView, imageView.bounds.height <= 1.0 {
                return imageView
            }
    
            for subview in view.subviews {
                if let imageView = self.hairlineImageView(in: subview) { return imageView }
            }
    
            return nil
        }
    }
    

提交回复
热议问题