zoukankan      html  css  js  c++  java
  • IOS多选单选相册图片

    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.效果

    出处:http://www.cnblogs.com/5ishare/p/4832242.html

     

  • 相关阅读:
    新概念4-38
    新概念4-37
    新概念4-36
    新概念4-35
    国史通鉴-03 天下为私 04
    新概念4-34
    西门子 框架断路器 及其他中低压配电设备资料查询
    OPC UA 的本质
    经典Scout添加等时同步设备
    同步报故障解同步启动
  • 原文地址:https://www.cnblogs.com/Li-Sport/p/5874681.html
Copyright © 2011-2022 走看看