UISearchController使用方法及注意事項
http://blog.csdn.net/kenrry1992/article/details/50799722
在進行iOS開發的時候,有時候涉及到搜尋功能,實現搜尋功能的方法有很多,可以是用自定義的搜尋控制元件,也可以用sdk提供的UISearchController(ios8以後)、UISearchDisplayController(ios8之前);
下面介紹UISearchController使用方法及注意事項:
//設定UISearchController的顯示屬性,以下3個屬性預設為YES //搜尋時,背景變暗色 _searchController.dimsBackgroundDuringPresentation = NO;//搜尋時,背景變模糊 _searchController.obscuresBackgroundDuringPresentation = NO; //隱藏導航欄 _searchController.hidesNavigationBarDuringPresentation = NO;
_searchController = [[UISearchController alloc] initWithSearchResultsController:_viewController];
_searchController.searchResultsUpdater = self; //設定UISearchResultsUpdating協議
_searchController.delegate = self; //設定UISearchControllerDelegate協議代理
_searchController.dimsBackgroundDuringPresentation = NO; //是否新增半透明覆蓋層
_searchController.hidesNavigationBarDuringPresentation = YES; //是否隱藏導航欄
[self.view addSubview:_searchController.searchBar]; //此處重要一步,將searbar顯示到介面上
另外需要注意在合適的地方新增下面一行程式碼
self.definesPresentationContext = YES;
這行程式碼是宣告,哪個viewcontroller顯示UISearchController,蘋果開發中心的demo中的對這行程式碼,註釋如下
// know where you want UISearchController to be displayed
a、如果不新增上面這行程式碼,在設定hidesNavigationBarDuringPresentation這個屬性為YES的時候,搜尋框進入編輯模式會導致,searchbar不可見,偏移-64;
在設定為NO的時候,進入編輯模式輸入內容會導致高度為64的白條,猜測是導航欄沒有渲染出來
b、如果添加了上面這行程式碼,在設定hidesNavigationBarDuringPresentation這個屬性為YES的時候,輸入框進入編輯模式正常顯示和使用;在設定為NO的時候,搜尋框進入編輯模式導致向下偏移64,具體原因暫時未找到