博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS多选单选相册图片
阅读量:7106 次
发布时间:2019-06-28

本文共 6014 字,大约阅读时间需要 20 分钟。

之前做项目让实现多选相册的图片,自己写了一个demo一直保存在电脑上,今天下午发现电脑128G的容量已经快没有了,准备清理电脑,所以把之前做的一些demo放在博客上,以后方便用。

1.首先准备3个图片

2.定义单元格PhoCollectionViewCell

#import 
typedef void(^SelectBtnClickBlock) (BOOL isSelect);@interface PhoCollectionViewCell : UICollectionViewCell@property (weak ,nonatomic) IBOutlet UIImageView * imageView;@property (weak ,nonatomic) IBOutlet UIImageView * selectImageView;@property (nonatomic,copy) SelectBtnClickBlock selectBtnClickBlock;- (IBAction)selectBtnClick:(id)sender;@property (weak, nonatomic) IBOutlet UIButton *selectBtn;@end
#import "PhoCollectionViewCell.h"@implementation PhoCollectionViewCell- (void)awakeFromNib {    // Initialization code    }- (IBAction)selectBtnClick:(id)sender {    UIButton *btn=(UIButton *)sender;     btn.selected=!btn.selected;    NSLog(@"%@",@"aaaa");      _selectBtnClickBlock(btn.selected);}@end

3.创建相片Model

#import 
#import
@interface PhoModel : NSObject@property(nonatomic,strong) ALAsset *asset;@property (nonatomic,assign) BOOL isSelected;@end
#import "PhoModel.h"@implementation PhoModel@end

 

4.获取相册图片显示图片

#import "ViewController.h"#import 
#import "AppDelegate.h"#import "PhoModel.h"#import "PhoCollectionViewCell.h"#define ApplicationDelegate ((AppDelegate *)[UIApplication sharedApplication].delegate)static NSInteger count = 0;@interface ViewController (){ NSMutableArray *mutableAssets;}@property (weak, nonatomic) IBOutlet UICollectionView *collectionView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; //获取相册中的全部照片 [self getAllPictures]; [_collectionView registerNib: [UINib nibWithNibName:@"PhoCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"CollectionViewCell"];}//获取相册中的全部照片-(void)getAllPictures { mutableAssets = [[NSMutableArray alloc]init]; NSMutableArray *assetURLDictionaries = [[NSMutableArray alloc] init]; NSMutableArray *assetGroups = [[NSMutableArray alloc] init]; __block NSMutableArray *tempMutableAssets = mutableAssets; __block ViewController *tempSelf = self; __block NSMutableArray *tempAssetGroups = assetGroups; [ApplicationDelegate.library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop){ if (group != nil) { count = [group numberOfAssets]; __block int groupNum = 0; [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop){ if(asset != nil) { ++ groupNum; if([[asset valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) { [assetURLDictionaries addObject:[asset valueForProperty:ALAssetPropertyURLs]]; NSURL *url= (NSURL*) [[asset defaultRepresentation]url]; NSLog(@"%@,%@",[asset valueForProperty:ALAssetPropertyDate],url); // [UIImage imageWithCGImage:[[result defaultRepresentation] fullScreenImage]];//图片// [UIImage imageWithCGImage:[result thumbnail]]; //缩略图 PhoModel *phoModel=[[PhoModel alloc]init]; phoModel.asset=asset; phoModel.isSelected=NO; [tempMutableAssets addObject:phoModel]; if (tempMutableAssets.count == groupNum) { [tempSelf allPhotosCollected:tempMutableAssets]; } } } }]; [tempAssetGroups addObject:group]; } }failureBlock:^(NSError *error){ NSLog(@"There is an error"); }];}//所有asset-(void)allPhotosCollected:(NSMutableArray *)mutableAsset{ [self.collectionView reloadData];}#pragma mark -- UICollectionViewDataSource- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { CGSize itemSize = CGSizeMake(([UIScreen mainScreen].bounds.size.width-15)/4.0, ([UIScreen mainScreen].bounds.size.width-30)/4.0); return itemSize;}//定义展示的UICollectionViewCell的个数-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ return mutableAssets.count+1;}//每个UICollectionView展示的内容-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ static NSString * CellIdentifier = @"CollectionViewCell"; PhoCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; if (indexPath.row==0) { cell.imageView.image = [UIImage imageNamed:@"0.png"]; cell.selectImageView.hidden=YES; cell.selectBtnClickBlock=^(BOOL isSelect) { NSLog(@"cell1 block"); }; return cell; } PhoModel *phoModel = mutableAssets[indexPath.row-1]; cell.imageView.image = [UIImage imageWithCGImage:[phoModel.asset thumbnail]]; if (phoModel.isSelected) { cell.selectImageView.image=[UIImage imageNamed:@"2.png"]; } else { cell.selectImageView.image=[UIImage imageNamed:@"1.png"]; } cell.selectImageView.hidden=NO; cell.selectBtn.selected=phoModel.isSelected; cell.selectBtnClickBlock=^(BOOL isSelect) { //单选多选标记 false 单选 true 多选 BOOL issangal=false; if (issangal) { for (PhoModel *tmpPhotoModel in mutableAssets) { tmpPhotoModel.isSelected = NO; } } phoModel.isSelected=isSelect; [_collectionView reloadData]; }; return cell;}- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { NSLog(@"%ld",indexPath.row);}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end

5.效果

 

转载地址:http://plphl.baihongyu.com/

你可能感兴趣的文章
golang 数组切片和字典
查看>>
get与post提交方式的区别
查看>>
分布式文件系统FastDFS介绍安装配置
查看>>
Kubernetes 控制器之 Deployment 介绍(六)
查看>>
LNMP构建编译安装zabbix
查看>>
Linux文本处理三剑客之sed
查看>>
OSPF基本配置
查看>>
第 3 章 镜像 - 016 - Dockerfile 常用指令
查看>>
基于python的web应用(一)
查看>>
什么是SEM
查看>>
Citrix Licensing Help
查看>>
究极!ThinkPHP 3.2.2 框架源码逐行分析(一)
查看>>
linux学习(2)--指令
查看>>
Dubbo基础篇_02_Zookeeper注册中心安装测试
查看>>
mysql慢查询日志
查看>>
sed 常用命令总结
查看>>
unity中经常用到的语句(1)
查看>>
Ubuntu 18.04下可视文件管理器Midnight Commander的安装使用
查看>>
sqoop内部结构
查看>>
MySQL5.7 切不要"乱射" --transaction-write-set-extraction=MURMUR32
查看>>