我有一个包含UISearchController
的导航栏,但找不到摆脱该导航栏下方1px底部边框的方法:
我已经按照this answer等建议使用了一些技巧来删除导航栏底部边框:
navigationBar.isTranslucent = false
navigationBar.setBackgroundImage(aTransparentImage, for: .default)
navigationBar.shadowImage = nil
如果我没有在视图控制器的searchController
上设置navigationItem
,那就没问题了,没有底边框,但是只要设置了searchController
,它就会出现。
即使在导航栏视图层次结构中寻找1px UIImageView
的肮脏黑客也不起作用,因为该视图似乎在层次结构的单独树中。这是UIImageView
,下面以蓝色突出显示:
我没主意
答案 0 :(得分:2)
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用于搜索栏的确切视图层次结构,并且可能会停止与任何将来的iOS版本一起使用(可在iOS 12上运行)。您可以通过在Superview子视图中搜索高度为1px的UIImageView
来使其具有更大的弹性,但是,这确实是一个hack。
但是到目前为止,这是我发现的唯一可行的解决方案。
答案 1 :(得分:0)
尝试添加
self.extendedLayoutIncludesOpaqueBars = true
或
self.automaticallyAdjustsScrollViewInsets = false;
self.extendedLayoutIncludesOpaqueBars = true
在ViewDidLoad方法中。对我有用