iOS11新特性之在你的APP中使用LargeTitle
随着wwdc17以及apple 2017秋季新品发布会的召开,apple也在9月20日正式推送了ios 11的正式版。在ios 11中,apple也推出了全新的ui风格。
ui风格
在ios 11中,系统app使用了这种ui风格。这种风格最明显的变化就是使用了ios 11的新特性--large title和新的searchcontroller。
demo
github: largertitledemo
large title & table view
设置lager title
app全局使用large title
- (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions { // override point for customization after application launch. // 设置large title偏好为true。 if (@available(ios 11.0, *)) { [[uinavigationbar appearance] setpreferslargetitles:true]; } else { // fallback on earlier versions } return yes; }
单个viewcontroller使用larger title
- (void)viewwillappear:(bool)animated { [super viewwillappear:animated]; // 设置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]; // 设置large title偏好为no。 if (@available(ios 11.0, *)) { [self.navigationcontroller.navigationbar setpreferslargetitles:no]; } else { // fallback on earlier versions } }
使用上述代码设置后,即可开启large title的显示。
添加table view
在storyboard添加tableview
在xcode 9中,xib和storyboard默认会添加 safe area(安全区) ,而添加在controller的view上控件的约束也不再以supview为准,而是以safe area为准。
safe area是在ios 9中添加的特性。如果你不需要使用safe area,或需要在旧版本的app中添加safe area,可以在xib或storyboard的右侧边栏中“show the file inspector”标签下对“use safe area layout guides”选项下进行勾选,以添加或删除safe area。
添加refresh control
refresh control是系统的下拉刷新控件,配合table view使用,以实现系统的下拉刷新效果。
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 }
刷新完成调用 - (void)endrefreshing ns_available_ios(6_0); 结束刷新状态。
search controller
添加搜索栏
if (@available(ios 11.0, *)) { uisearchcontroller *searchcontroller = [[uisearchcontroller alloc]initwithsearchresultscontroller:nil]; self.navigationitem.searchcontroller = searchcontroller; } else { // fallback on earlier versions }
关于 search controller 的使用在此不再赘述。可参考官方sample code table search with uisearchcontroller
再说几句
由于large title及一些api仅在ios 11提供,所以在调用前均添加了判断,以防止低版本系统调用高版本api造成应用崩溃
if (@available(ios 10.0, *)) { // code... } else { // fallback on earlier versions }
在实际开发中,在viewcontroller上添加tableview实现效果不够理想,在滑动过程中有明显卡顿。而直接使用tableviewcontroller实现效果最为理想,滑动无卡顿现象。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。