相信很多朋友都在使用UISearchController
总会遇到一些莫名其妙的问题,当然我也遇到了,下面就记录下使用UISearchController
中遇到问题部分问题。
初始代码:
问题1:点击搜索框时searchResultsController和searchBar间隔44pt,并且点击跳转无响应,如下图:
解决办法,添加代码:
效果如下:
问题2:在设置导航栏为不透明时,点击搜索时searchBar偏移出屏幕
解决办法同上
问题3:在设置导航栏为不透明时,点击搜索框出现如下情况:
解决办法,添加代码:
效果如下:
属性介绍:
|
|
引起问题的原因:
- 出现searchResultsController和searchBar间隔44pt的原因就在于,UISearchController有个
hidesNavigationBarDuringPresentation
属性,其默认值为YES,就是在点击searchBar时进行搜索时会将导航栏隐藏,并将searchBar移动到navigationBar的位置处,而tableView并不知道searchBar已经移动到navigationBar的位置所以就多出了44pt; - 在searchResultsController中点击cell无法跳转是因为searchResultsController并不是主视图,而在设置
self.definesPresentationContext = YES
后,系统会将searchResultsController设置为新的主视图; - 在设置导航栏为不透明时(
self.navigationController.navigationBar.translucent = NO
),点击搜索时searchBar偏移出屏幕,导航栏不透明时,self.view的原点是从导航栏的底部,那么相对self.view而言navigationBar的x=-64,所以搜searchBar弹出时获取self.navigationController.navigationBar.x = searchBar.x;
,此navigationBar已经隐藏,searchBar.x = -64这个时候就会偏移出屏幕。 - 那么到searchBar向下偏移64pt原理同上。
总结:
可能有些地方解释的不到位,欢迎大家指正。