iOS11新特性之LargeTitle

UI风格

在iOS 11中,系统APP使用了这种UI风格。这种风格最明显的变化就是使用了iOS 11的新特性--Large Title和新的SearchController。

Demo

GitHub: LargerTitleDemo

 

Large Title & Table View

设置Lager Title

APP全局使用Large Title

?
1
2
3
4
5
6
7
8
9
10
- ( 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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- ( 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使用,以实现系统的下拉刷新效果。

?
1
2
3
4
5
6
7
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

添加搜索栏

?
1
2
3
4
5
6
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造成应用崩溃

?
1
2
3
4
5
if (@available(iOS 10.0, *)) {
  // Code...
} else {
  // Fallback on earlier versions
}

在实际开发中,在ViewController上添加TableView实现效果不够理想,在滑动过程中有明显卡顿。而直接使用TableViewController实现效果最为理想,滑动无卡顿现象。

 

链接  http://www.jb51.net/article/130433.htm

感谢分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值