我有一个包含 UISearchController
的导航栏,但我找不到摆脱导航栏下方 1px 底部边框的方法:
我已经按照 this answer 中的建议使用了删除导航栏底部边框的技巧。和许多其他人:
navigationBar.isTranslucent = false
navigationBar.setBackgroundImage(aTransparentImage, for: .default)
navigationBar.shadowImage = nil
如果我不在我的 View Controller 的 navigationItem
上设置 searchController
没问题,没有底部边框,但是一旦我设置了 searchController
它出现了。
即使是在导航栏 View 层次结构中寻找 1px UIImageView
的肮脏 hacks 也不起作用,因为看起来这个 View 位于层次结构的单独树中。这是下面以蓝色突出显示的 UIImageView
:
我没有想法😕
最佳答案
好的,我的一个同事提供了一个解决方案。在显示搜索栏的 View Controller 中的 viewWillAppear
中:
if let imageView = navigationItem.searchController?
.searchBar.superview?
.subviews.first?
.subviews.last as? UIImageView,
imageView.frame.height * UIScreen.main.scale == 1.0 {
imageView.isHidden = true
}
这显然高度依赖于 UIKit 用于搜索栏的确切 View 层次结构,并且可能会停止与任何 future 版本的 iOS 一起工作(它在 iOS 12 上工作)。您可以通过在 superview subview 中搜索 1px 高度的 UIImageView
来使其更具弹性,但这仍然是一个 hack。
但到目前为止,这是我发现的唯一可行的解决方案。
关于ios - 如何使用 UISearchController *从 UINavigationBar 中删除 1px 底部边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55164743/