簡體   English   中英

如何在NavigationBar中全局添加陰影並刪除底線?

[英]How to add shadow and remove bottom line in NavigationBar globally?

所以我在尋找如何向NavigationBar添加陰影並從NavigationBar刪除底部的黑色線條? 另外,如果我在NavigationBar中具有searchBar,則陰影應位於搜索欄的下方。 我想全局更改而不在每個viewController中進行更改。

https://imgur.com/a/8ogGRaf.jpg

因此,我已經存檔了這些更改,只是在搜索控制器下方添加了陰影。

  1. 對於陰影:

     self.navigationController?.navigationBar.isTranslucent = false self.navigationController?.navigationBar.layer.shadowColor = UIColor.black.cgColor self.navigationController?.navigationBar.layer.shadowOffset = CGSize(width: 0.0, height: 0.0) self.navigationController?.navigationBar.layer.shadowRadius = 7.0 self.navigationController?.navigationBar.layer.shadowOpacity = 0.2 
  2. 對於刪除底部欄:

     UINavigationBar.appearance().backIndicatorImage = UIImage(named:"normal") UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage(named:"normal") 

這是我在搜索欄中遇到的問題

https://imgur.com/a/QQ9yrbE

2.隱藏底線

public extension UINavigationBar {

    /// Hide line under navigation bar
    public func hideBottomHairline() {
        let navigationBarImageView = hairlineImageViewInNavigationBar(self)
        navigationBarImageView!.isHidden = true
    }

    ///  Show line under navigation bar
    public func showBottomHairline() {
        let navigationBarImageView = hairlineImageViewInNavigationBar(self)
        navigationBarImageView!.isHidden = false
    }

    fileprivate func hairlineImageViewInNavigationBar(_ view: UIView) -> UIImageView? {
        if view.isKind(of: UIImageView.self) && view.bounds.height <= 1.0 {
            return (view as! UIImageView)
        }
        let subviews = (view.subviews as [UIView])
        for subview: UIView in subviews {
            if let imageView: UIImageView = hairlineImageViewInNavigationBar(subview) {
                return imageView
            }
        }
        return nil
    }   
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM