导航栏+搜索控制器+大标题:滚动时的发际线

时间:2019-02-03 15:46:57

标签: ios swift uinavigationbar uisearchcontroller

上下文:

  • UINavigationControllerUITableViewController
  • UISearchController在导航栏中
  • 导航栏为半透明的黑色样式,它使用大标题tintColorbarTintColor(因此没有背景图片)。

问题:

我有一个奇怪的动画故障,在搜索栏上方显示一条细线。发际线仅在滚动期间出现。

Screencast

我已经尝试过许多解决类似问题的方法,但是它们没有帮助。

在装有iOS 12.1.3的iPhone 7上进行了测试

1 个答案:

答案 0 :(得分:-1)

您可以使用此方法解决发际线问题

searchController.searchBar.layer.borderColor = UIColor(red: 242/255.0, green: 82/255.0, blue: 46/255.0, alpha: 1).CGColor
searchController.searchBar.layer.borderWidth = 1

如果上述方法无效。您可以完全去除发际线

extension UINavigationBar {
        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
    }
}