当前位置: 移动技术网 > IT编程>移动开发>IOS > iOS11新特性之在你的APP中使用LargeTitle

iOS11新特性之在你的APP中使用LargeTitle

2019年07月24日  | 移动技术网IT编程  | 我要评论

ui设计培训班 北京智库灯塔,李武荣,丹凤朝阳19楼

随着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实现效果最为理想,滑动无卡顿现象。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网