1.在 swift 工程中 使用 cocoapods 導(dǎo)入第三方庫后出現(xiàn) no such module afnetworking
錯(cuò)誤
解決辦法:
這是swift項(xiàng)目迟蜜,在Podfile文件中加入“use_frameworks!” 然后pod install一下史侣,回到項(xiàng)目中Command+b棍弄,pod install后蜀漆,它還是源碼狀態(tài)莫瞬,所以需要build一下罐栈。
2. 使用 cocoapods 時(shí),編譯報(bào)錯(cuò)
在 Building Setting 中的Other Linker Flags 中檢查是不是為空了谴蔑,如果是那么添加一句
$(inherited)
,再重新編譯就不會(huì)報(bào)錯(cuò)了龟梦。
3.使用 UISearchController 遇到的問題:
我自定義了一個(gè) HeaderView隐锭,如下圖:
然后在創(chuàng)建 tableView
的時(shí)候,設(shè)置了 tableHeaderView
计贰,然后把 searchController
添加到了 headerView
上钦睡,如下代碼:
YMCustomerHeader *headerView = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([YMCustomerHeader class]) owner:nil options:nil] lastObject];
[headerView.segmentedControl addTarget:self action:@selector(segmentedControlClick:) forControlEvents:UIControlEventValueChanged];
self.searchController.searchBar.x = 0;
self.searchController.searchBar.y = 0;
[headerView addSubview:self.searchController.searchBar];
tableView.tableHeaderView = headerView;
下面是設(shè)置 searchController
的代碼:
-(UISearchController *)searchController {
if (_searchController == nil) {
_searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
_searchController.searchBar.backgroundImage = [UIImage imageNamed:@"manage_customer_archive_search_background"];
_searchController.searchResultsUpdater = self;
_searchController.dimsBackgroundDuringPresentation = NO;
_searchController.searchBar.placeholder = @"搜索";
[_searchController.searchBar sizeToFit];
}
return _searchController;
}
運(yùn)行后發(fā)現(xiàn)搜索欄的位置偏移了 -64 的高度,導(dǎo)致不能在屏幕上顯示躁倒,如下圖:
這時(shí)需要添加一行代碼:
_searchController.hidesNavigationBarDuringPresentation = YES;
這行代碼是聲明荞怒,哪個(gè)viewcontroller顯示UISearchController,蘋果開發(fā)中心的demo中的對(duì)這行代碼秧秉,注釋如下
// know where you want UISearchController to be displayed
如果不添加上面這行代碼褐桌,在設(shè)置 hidesNavigationBarDuringPresentation
這個(gè)屬性為YES的時(shí)候,搜索框進(jìn)入編輯模式會(huì)導(dǎo)致象迎,搜索欄不可見荧嵌,偏移 -64 ;在設(shè)置為 NO
的時(shí)候,進(jìn)入編輯模式輸入內(nèi)容會(huì)導(dǎo)致高度為 64 的白條砾淌,猜測(cè)是導(dǎo)航欄沒有渲染出來啦撮。
但是經(jīng)過測(cè)試,情況還是和上圖一樣汪厨,搜索欄還是偏移 -64赃春,不能顯示。然后我又添加了下面的代碼:
_searchController.hidesNavigationBarDuringPresentation = NO;
運(yùn)行如下圖:
現(xiàn)在搜索欄沒有發(fā)生偏移劫乱,但是導(dǎo)航欄卻沒有隱藏织中,于是我把 NO
改為了 YES
,運(yùn)行如下圖:
結(jié)果還是發(fā)生了偏移衷戈。
然后我發(fā)現(xiàn) definesPresentationContext
是 UIViewController
的一個(gè)屬性抠璃。所以我就把上面的代碼改成了:
self.definesPresentationContext = YES;
運(yùn)行如下圖:
What the fuck???
然后我又把隱藏導(dǎo)航欄設(shè)置為了YES
:
_searchController.hidesNavigationBarDuringPresentation = YES;
搜索框就能正常顯示了脱惰,如下圖:
然后我又試著把隱藏導(dǎo)航欄的屬性注釋掉,然后運(yùn)行窿春,還是能夠正常顯示拉一,下面是隨后的代碼:
-(UISearchController *)searchController {
if (_searchController == nil) {
_searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
_searchController.searchBar.backgroundImage = [UIImage imageNamed:@"manage_customer_archive_search_background"];
_searchController.searchResultsUpdater = self;
_searchController.dimsBackgroundDuringPresentation = NO;
_searchController.definesPresentationContext = YES;
self.definesPresentationContext = YES;
_searchController.searchBar.placeholder = @"搜索";
[_searchController.searchBar sizeToFit];
}
return _searchController;
}
到此搜索框就能正常是顯示了采盒。??