你的位置:首页 > 操作系统

[操作系统]IOS多选单选相册图片


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

1.首先准备3个图片

2.定义单元格PhoCollectionViewCell

#import <UIKit/UIKit.h>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 <Foundation/Foundation.h>#import <AssetsLibrary/ALAssetsLibrary.h>@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 <AssetsLibrary/AssetsLibrary.h>#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.效果