一 . tableView自定义多选编辑模式
-
在合适的地方开启编辑模式
[self.tableView setEdting:YES animated:YES]
-
设置编辑样式
//返回Cell的编辑样式。
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
//现在存在一个问题,如果用这种方式,就无法实现tableView的左右滑动出编辑菜单了。
return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
//这个方式,就是返回多选样式
}
- 高潮来了:怎么改变系统自带的那个样式呢?
- 第一种方法:在cell的contentView上面添加一个自定义的button 这个button的frame的x 应该是负数. 可以考虑masory布局
- 如果是单纯考虑换个颜色(其实系统自带的样式挺好看的_),那就简单了
直接cell.tintColor = 某个color;
比如我的效果:
自定义cell多选样式:纯真蓝
二 . collectionViewCell的多选样式
这个相对tableView来说有点难度,因为没有专门的可以设置的editing方法,只有多选模式.那么,可以从这个下手.
- 在合适的时机,将collectionViewCell多选模式设置为同意.
self.collectionView.allowsMultipleSelection = YES; -
高潮:改变样式
collectionViewCell里面没有相应的selectionStyle 但是有selectBackgroudView.这个一样拉风.
-
1.在合适的情况下(开启collectionView的多选模式的同时),改变cell的背景View为一个带圈圈的View:
注意:不在编辑状态下的时候就改回去(空View),不然你懂的.
编辑状态下cell的背景图片
-
2.选中cell的时候 圈圈变色,cell背景变灰,也就是选中状态
屏幕快照 2017-04-19 下午11.30.57.png
-
整体代码可以写collectionViewCellForRow代理方法里面.
注意 : 在开启
collectionView.allowsMultipleSelection
的那个方法的同时,配合着collectionView
的reload data
方法才是这一切改变的真正开始.至于为什么,请自行体会.
//如果是多cell编辑状态就改变背景
if (collectionView.allowsMultipleSelection == YES) {
//选择背景
UIView *view = [[UIView alloc]initWithFrame:cell.bounds];
UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"pin_sel"]];
[view addSubview:imageView];
view.backgroundColor = XHHGrey;
[imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(view);
make.right.equalTo(view);
}];
cell.selectedBackgroundView = view;
//非选择背景
UIView *view2 = [[UIView alloc]initWithFrame:cell.bounds];
UIImageView *imageView2 = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"pin_nor"]];
[view2 addSubview:imageView2];
[imageView2 mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(view2);
make.right.equalTo(view2);
}];
cell.backgroundView =view2;
}else {
cell.selectedBackgroundView = nil;
cell.backgroundView = nil;
}
网友评论