导航栏+搜索+控制器大标题:在滚动过程中发丝

问题描述 投票:0回答:1

语境:

  • UINavigationController UITableViewController
  • UISearchController导航栏
  • 采用黑色风格的导航条半透明的,它采用大标题,tintColorbarTintColor(所以没有背景图片)。

问题:

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

Screencast

我已经尝试了多种解决方案,有关类似的问题,但他们并没有帮助。

与iPhone 7与iOS 12.1.3测试的

ios swift uinavigationbar uisearchcontroller
1个回答
-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
    }
}

推荐问答