滚动或直到按下搜索栏时导航栏下方的白线
Posted
技术标签:
【中文标题】滚动或直到按下搜索栏时导航栏下方的白线【英文标题】:White line under navigation bar when scrolling or until pressing on the search bar 【发布时间】:2017-04-19 13:28:42 【问题描述】:正如您在视频中看到的,当我开始滚动时,导航栏下方会出现一条白色细线。
它只会在我按下 searchBar(包含在我的 searchController 中,因此不会从 Storyboard 添加搜索栏)时消失。我尝试了很多不同的组合以试图让它消失,但没有任何效果。
感谢任何帮助!谢谢!
视频: https://www.youtube.com/watch?v=KcgZmBg1VS0
这是我viewDidLoad
里面的代码:
searchController.searchBar.delegate = self
searchController.dimsBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
searchController.searchBar.placeholder = "Search for a recipe"
searchController.searchBar.barTintColor = navigationController?.navigationBar.barTintColor
searchController.searchBar.tintColor = UIColor.white
【问题讨论】:
这个白线问题是一个错误,即使在最新的 ios 12 测试版中也是如此。禁用导航栏的半透明会有所帮助,但这会影响 UI 和滚动视图行为。 【参考方案1】:尝试设置背景颜色和更改navigationBar
的阴影。它可能与navigationBar
有关。
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = UIImage()
尝试添加这一行:
searchController.searchBar.backgroundColor = navigationController?.navigationBar.barTintColor
在文件setupSearchBar()
中
代码修复后:
【讨论】:
@TomaRadu-Petrescu 我将创建测试项目并尝试看看发生了什么 那太好了 :) 谢谢! @TomaRadu-Petrescu 我用 searchController 创建了一个小项目,但没有收到这种行为。所以这可以连接到我们的导航栏。能否请您与导航栏自定义共享代码 @TomaRadu-Petrescu 我添加了应该修复行为的小代码修复。 哇!它解决了这个问题。非常感谢您的时间和答案!!!【参考方案2】:顺便说一句,您可以移除导航栏下方的阴影。我为此创建了扩展:
extension UINavigationBar
func shouldRemoveShadow(_ value: Bool) -> Void
self.setValue(value, forKey: "hidesShadow")
【讨论】:
我根本没有验证您输入的内容,但我想指出if
毫无意义。您已经有一个布尔值,所以将它用作setValue
的参数!这个方法的主体可以是 1 行而不是 5 行:self.setValue(value, forKey: "hidesShadow")
以上是关于滚动或直到按下搜索栏时导航栏下方的白线的主要内容,如果未能解决你的问题,请参考以下文章