IOS多選單選相冊圖片

IOS多選單選相冊圖片

以前作項目讓實現多選相冊的圖片,本身寫了一個demo一直保存在電腦上,今天下午發現電腦128G的容量已經快沒有了,準備清理電腦,因此把以前作的一些demo放在博客上,之後方便用。html

1.首先準備3個圖片post

2.定義單元格PhoCollectionViewCellatom

複製代碼
#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.建立相片Modelurl

複製代碼
#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.獲取相冊圖片顯示圖片spa

複製代碼
#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.效果code

 

出處: http://www.cnblogs.com/5ishare/p/4832242.html
相關文章
相關標籤/搜索