ios - 如何全局添加阴影和删除 NavigationBar 中的底线?

标签 ios swift uinavigationcontroller uinavigationbar uinavigationitem

所以我正在寻找如何向 NavigationBar 添加阴影并从 NavigationBar 中删除底部黑线?另外,如果我在 NavigationBar 中有 searchBar,那么阴影应该在下方搜索栏。我想在全局范围内进行更改,而不是在每个 viewController 中进行更改。

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

所以我已经存档了这些更改,除了在搜索 Controller 下面添加一个阴影。

  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
    }   
}

关于ios - 如何全局添加阴影和删除 NavigationBar 中的底线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56372066/

相关文章:

iphone - iOS SDWebImage 在 UITableViewCell 中淡入淡出

android - 如何在 iOS(AVFoundation 或其他第 3 方库)中使用 HLS 时移功能,如 Android 中的 ExoPlayer?

ios - 点击外部后 DatePicker 未关闭

swift - 为 UINavigationController 标题中的单个单词设置字体

ios - 之后更新表格单元格变量的值

ios - 无法从 Objective-C View Controller 访问 Swift var - iOS

ios - 如何根据 PFRelation 更改图像?

ios - 在 iOS 应用程序中使用 Google Map SDK 和 Swift 进行路线导航

ios - UINavigationController 不会在后退按钮上弹出 View

uiviewcontroller - 如何在 Storyboard中的 View 之间导航而不使用导航栏或选项卡栏