iOS11之Nav Big Title、UITableView Swipe

近期应公司组长要求做个wwdc17的分享,顺便记录一下。

Nav Large Titles                大导航栏

UITableView Swipe Api  左右滑动新API


1.Nav Large Titles

设置是否为大导航栏的属性:

@property (nonatomic, readwrite, assign) BOOL prefersLargeTitles;  //Defaults to NO.

self.navigationController.navigationBar.prefersLargeTitles = true;


为大导航栏时,(prefersLargeTitles = true)时大导航栏显示样式:

通过这个可以控制不同需求的导航栏样式

3个枚举值

@property (nonatomic, readwrite, assign) UINavigationItemLargeTitleDisplayMode largeTitleDisplayMode;

self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever;

typedef NS_ENUM(NSInteger, UINavigationItemLargeTitleDisplayMode) {

UINavigationItemLargeTitleDisplayModeAutomatic,

UINavigationItemLargeTitleDisplayModeAlways,

UINavigationItemLargeTitleDisplayModeNever,

}

2.UITableView Swipe Api

iOS新增的UITableViewDelegate 代理方法

构造一个UIContextualAction,与UIAlertAction类似, action回调在block里面。   有UIContextualActionStyleNormal和UIContextualActionStyleDestructive两种样式,还可以设置背景色,标题,图片。

把生成的UIContextualAction放进数组,对的,所以可以有多个左滑动或者右滑动的视图,构造UISwipeActionsConfiguration,返回就行啦

UISwipeActionsConfiguration 有个performsFirstActionWithFullSwipe的属性是指第一个UIContextualAction是否支持是滑动范围很大(整个屏幕时)触发action

//left views

- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView  leadingSwipeActionsConfigurationForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{

BOOL hasLike = [self.likeArr containsObject:self.list[indexPath.row]];

NSString *title = hasLike ? @"unlike":@"like";

UIContextualAction *action = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:title handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

if (hasLike) {

cell.accessoryType = UITableViewCellAccessoryNone;

[self.likeArr removeObject:self.list[indexPath.row]];

}else{

cell.accessoryType = UITableViewCellAccessoryCheckmark;

[self.likeArr addObject:self.list[indexPath.row]];

}

completionHandler(true);

}];

UISwipeActionsConfiguration  *configuration =  [UISwipeActionsConfiguration configurationWithActions:@[action]];

configuration.performsFirstActionWithFullSwipe  = false;

return configuration;

}

//right views

- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath

{

UIContextualAction *action = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:@"delete" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {

[self.list removeObjectAtIndex:indexPath.row];

completionHandler(true);

}];

UISwipeActionsConfiguration  *configuration =  [UISwipeActionsConfiguration configurationWithActions:@[action]];

configuration.performsFirstActionWithFullSwipe  = false;

return configuration;

}

rightView


leftView
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,102评论 3 38
  • { 24、Sqlite数据库 1、存储大数据量,增删改查,常见管理系统:Oracle、MSSQLServer、DB...
    CYC666阅读 984评论 0 1
  • 原文 前言 本文为回答一位朋友关于MVC/MVP/MVVM架构方面的疑问所写, 旨在介绍iOS下MVC/MVP/M...
    无沣阅读 738评论 1 2
  • 我是一个追求完美的人,但直到今天,也没有什么事情是按照我“完美”的想法依次发生的。所以,这是一种追求,现实与之不太...
    胡阿忧阅读 313评论 0 2
  • 今天学习了以终为始的课程,在我们的预售工作中体现的最明显。工作初期目标明确,按照整体目标制定每一阶段每一天的工作内...
    三月菁菁阅读 143评论 0 1