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

Posted

技术标签:

【中文标题】导航栏 + 搜索控制器 + 大标题:滚动时的细线【英文标题】:Navigation bar + Search controller + Large title: Hairline during scrolling 【发布时间】:2019-02-03 15:46:57 【问题描述】:

上下文:

UINavigationControllerUITableViewController 导航栏中的UISearchController 导航栏半透明,黑色风格,使用大标题,tintColorbarTintColor(所以没有背景图片)。

问题:

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

我已经尝试了很多解决类似问题的方法,但都没有帮助。

在装有 ios 12.1.3 的 iPhone 7 上测试

【问题讨论】:

【参考方案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
    

【讨论】:

首先我使用UISearchController而不是UISearchDisplayController,无论如何,谢谢,但它没有帮助。此外,self.hairlineImageView 属性是什么? 搜索栏边框没有帮助,因为上面出现了细线,请打开duaw26jehqd4r.cloudfront.net/items/3y1p3j252B1Z3912422V/…图片查看hairlineImageView已找到并隐藏,但问题依旧。到目前为止观察到没有问题的唯一方法是将导航栏设置为不透明。 ***.com/questions/38355288/… 为最少的解决方案,您可以尝试更改底部发际线颜色。

以上是关于导航栏 + 搜索控制器 + 大标题:滚动时的细线的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11.2 - 在带有大标题的导航栏中时,搜索控制器栏背景清晰

使用表格视图快速搜索控制器滚动

iOS 11 中的搜索栏问题有大标题

在 iOS 11 上以编程方式滚动 UISearchController 的搜索栏不会消失

单击“搜索”按钮时的奇怪行为

导航栏在推送到新视图控制器时会缩小