Ios 如何使用UISearchController从UINavigationBar*删除1px底部边框?
我有一个导航栏,其中包含一个Ios 如何使用UISearchController从UINavigationBar*删除1px底部边框?,ios,swift,uinavigationbar,uisearchcontroller,Ios,Swift,Uinavigationbar,Uisearchcontroller,我有一个导航栏,其中包含一个UISearchController,我无法找到摆脱导航栏下方1px底部边框的方法: 我已经在使用中建议的移除导航栏底部边框的技巧以及其他许多技巧: navigationBar.isTranslucent=false navigationBar.setBackgroundImage(一个透明页面,用于:。默认值) navigationBar.shadowImage=nil 如果我没有在我的视图控制器的navigationItem上设置searchControlle
UISearchController
,我无法找到摆脱导航栏下方1px底部边框的方法:
我已经在使用中建议的移除导航栏底部边框的技巧以及其他许多技巧:
navigationBar.isTranslucent=false
navigationBar.setBackgroundImage(一个透明页面,用于:。默认值)
navigationBar.shadowImage=nil
如果我没有在我的视图控制器的navigationItem
上设置searchController
,这很好,没有底部边框,但只要设置searchController
,它就会出现
即使是在导航栏视图层次结构中查找1pxUIImageView
的肮脏黑客也不起作用,因为该视图似乎位于层次结构的单独树中。下面是以蓝色突出显示的UIImageView
:
我没有主意了好吧,我的一位同事提供了一个解决方案。在
视图中,将在显示搜索栏的视图控制器中显示:
如果让imageView=navigationItem.searchController?
.searchBar.superview?
.subview.first?
.subviews.last as?UIImageView,
imageView.frame.height*UIScreen.main.scale==1.0{
imageView.ishiden=true
}
这显然高度依赖于UIKit用于搜索栏的确切视图层次结构,并且可能会停止使用任何未来版本的iOS(它适用于iOS 12)。通过在superview子视图中搜索1px高度的UIImageView,您可以使其更具弹性,但这仍然是一个相当复杂的问题
但到目前为止,这是我发现的唯一有效的解决方案。尝试添加
self.extendedLayoutIncludesOpaqueBars = true
或
在ViewDidLoad方法中。这对我来说很有效面对同样的问题,你还有其他更好的想法吗。。?
self.automaticallyAdjustsScrollViewInsets = false;
self.extendedLayoutIncludesOpaqueBars = true