滚动时或在点击搜索栏之前,导航栏下方会出现白色线条。

4
如您在视频中所见,当我开始滚动时,导航栏下方会出现白色细线。

只有当我按下搜索栏(由我的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

这个白线问题是一个bug,即使在最新的iOS 12 beta版本中也存在。禁用导航栏的半透明效果可以解决问题,但会对UI和滚动视图的行为产生影响。 - Ely
2个回答

3

尝试设置导航栏 navigationBar 的背景颜色和更改其阴影。这可能与 navigationBar 相关。

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = UIImage()

尝试添加这一行代码:
searchController.searchBar.backgroundColor = navigationController?.navigationBar.barTintColor

在文件setupSearchBar()
代码修复后:

enter image description here


那将是很棒的 :) 谢谢! - Toma Radu-Petrescu
@TomaRadu-Petrescu,我创建了一个带有searchController的小项目,但没有遇到这种行为。因此,这可能与我们的导航栏有关。您能否分享一下自定义导航栏的代码? - Oleg Gordiichuk
@TomaRadu-Petrescu,我添加了一小段代码修复程序的行为。 - Oleg Gordiichuk
哇!问题解决了。非常感谢您的时间和答案!!! - Toma Radu-Petrescu
@TomaRadu-Petrescu 很高兴能够帮助。 - Oleg Gordiichuk
显示剩余2条评论

-1

顺便说一下,您可以通过以下方式删除导航栏下方的阴影。我已经创建了一个扩展程序来完成此操作:

extension UINavigationBar {

  func shouldRemoveShadow(_ value: Bool) -> Void {
    self.setValue(value, forKey: "hidesShadow")
  }
}

我并没有验证你所输入的内容,但我想指出if是无意义的。你已经有了一个布尔值,所以将其用作setValue的参数!这个方法的主体可以简单地变成1行而不是5行:self.setValue(value, forKey: "hidesShadow") - Nate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接