隨著WWDC17以及Apple 2017秋季新品發(fā)布會(huì)的召開(kāi),Apple也在9月20日正式推送了iOS 11的正式版。在iOS 11中,Apple也推出了全新的UI風(fēng)格之剧。
在iOS 11中,系統(tǒng)APP使用了這種UI風(fēng)格砍聊。這種風(fēng)格最明顯的變化就是使用了iOS 11的新特性--Large Title和新的SearchController背稼。
原文地址:https://www.zlucy.com/archives/258/
Demo
GitHub:LargerTitleDemo
Large Title & Table View
設(shè)置Lager Title
- APP全局使用Large Title
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
// 設(shè)置Large Title偏好為T(mén)rue。
if (@available(iOS 11.0, *)) {
[[UINavigationBar appearance] setPrefersLargeTitles:true];
} else {
// Fallback on earlier versions
}
return YES;
}
- 單個(gè)ViewController使用Larger Title
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// 設(shè)置Large Title偏好為YES玻蝌。
if (@available(iOS 11.0, *)) {
[self.navigationController.navigationBar setPrefersLargeTitles:YES];
} else {
// Fallback on earlier versions
}
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
// 設(shè)置Large Title偏好為NO蟹肘。
if (@available(iOS 11.0, *)) {
[self.navigationController.navigationBar setPrefersLargeTitles:NO];
} else {
// Fallback on earlier versions
}
}
使用上述代碼設(shè)置后词疼,即可開(kāi)啟Large Title的顯示。
添加Table View
在Xcode 9中疆前,XIB和StoryBoard默認(rèn)會(huì)添加Safe Area(安全區(qū))寒跳,而添加在Controller的View上控件的約束也不再以supview為準(zhǔn),而是以Safe Area為準(zhǔn)竹椒。
Safe Area是在iOS 9中添加的特性。如果你不需要使用Safe Area米辐,或需要在舊版本的App中添加Safe Area胸完,可以在XIB或StoryBoard的右側(cè)邊欄中“Show the File inspector”標(biāo)簽下對(duì)“Use Safe Area Layout Guides”選項(xiàng)下進(jìn)行勾選,以添加或刪除Safe Area翘贮。
添加Refresh Control
Refresh Control是系統(tǒng)的下拉刷新控件赊窥,配合Table View使用,以實(shí)現(xiàn)系統(tǒng)的下拉刷新效果狸页。
UIRefreshControl *refreshControl = [[UIRefreshControl alloc]init];
[refreshControl addTarget:self action:@selector(beginRefresh:) forControlEvents:UIControlEventValueChanged];
if (@available(iOS 10.0, *)) {
[self.tableView setRefreshControl:refreshControl];
} else {
// Fallback on earlier versions
}
刷新完成調(diào)用- (void)endRefreshing NS_AVAILABLE_IOS(6_0);
結(jié)束刷新?tīng)顟B(tài)锨能。
Search Controller
添加搜索欄
if (@available(iOS 11.0, *)) {
UISearchController *searchController = [[UISearchController alloc]initWithSearchResultsController:nil];
self.navigationItem.searchController = searchController;
} else {
// Fallback on earlier versions
}
關(guān)于Search Controller的使用在此不再贅述∩衷牛可參考官方Sample Code Table Search with UISearchController
再說(shuō)幾句
- 由于Large Title及一些API僅在iOS 11提供址遇,所以在調(diào)用前均添加了判斷,以防止低版本系統(tǒng)調(diào)用高版本API造成應(yīng)用崩潰
if (@available(iOS 10.0, *)) {
// Code...
} else {
// Fallback on earlier versions
}
- 在實(shí)際開(kāi)發(fā)中斋竞,在ViewController上添加TableView實(shí)現(xiàn)效果不夠理想倔约,在滑動(dòng)過(guò)程中有明顯卡頓。而直接使用TableViewController實(shí)現(xiàn)效果最為理想坝初,滑動(dòng)無(wú)卡頓現(xiàn)象浸剩。
相關(guān)推薦
iOS 11 新特性 - App密碼自動(dòng)填充實(shí)現(xiàn)
iOS開(kāi)發(fā)之 Handoff 初學(xué)乍練
iOS設(shè)備、Icon鳄袍、LaunchImage分辨率 - 含iPhone X