IOS开发相册图片多选和删除的功能

2020-01-15 17:54:04刘景俊

第二个控制器 .h


#import <UIKit/UIKit.h>
#import "NumberofwordsTextView.h"

@interface RRZSendShowTextCell : UITableViewCell

@property (weak, nonatomic) NumberofwordsTextView *numberTextView;

@end

第二个控制器 .m


#define kTweetContentCell_ContentFont [UIFont systemFontOfSize:16]

#import "RRZSendShowTextCell.h"

@interface RRZSendShowTextCell()

@end

@implementation RRZSendShowTextCell

- (void)awakeFromNib {
  [super awakeFromNib];
  // Initialization code
  self.selectionStyle = UITableViewCellSelectionStyleNone;
}

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
  self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
  if (self) {

    NumberofwordsTextView *numberTextView = [[NumberofwordsTextView alloc] init];
    numberTextView.frame = CGRectMake(7, 7, SCREEN_WIDTH-7*2, 180);
    numberTextView.wordsMaxNumer = 300;
    numberTextView.placeHolder = @"写点什么来晒一晒吧...";
    numberTextView.textFont = [UIFont systemFontOfSize:14];
    [self addSubview:numberTextView];
    self.numberTextView = numberTextView;
  }
  return self;
}

@end

第三个 .h


#import <UIKit/UIKit.h>
#import "ShowEditItem.h"

@interface RRZSendShowImageCell : UITableViewCell

@property (copy, nonatomic) void (^addPicturesBlock)();
@property (copy, nonatomic) void (^deleteImageBlock)(ShowEditItem *toDelete);
@property (nonatomic,strong) ShowEditItem *item;

@end
.m

#define kShowImageCCell_Width floorf((SCREEN_WIDTH - 15*2- 10*3)/4)

#import "RRZSendShowImageCell.h"
#import "RRZShowEditImageCell.h"
#import "UICustomCollectionView.h"

static NSString *cellID = @"RRZShowImageCCellID";
@interface RRZSendShowImageCell()<UICollectionViewDelegate,UICollectionViewDataSource>

@property (strong, nonatomic) UICustomCollectionView *mediaView;
@property (strong, nonatomic) NSMutableDictionary *imageViewsDict;
/** <#注释#>*/
@property (strong, nonatomic) NSArray *imgs;
/** <#注释#>*/
@property (weak, nonatomic) UIButton *deleteBtn;

@end

@implementation RRZSendShowImageCell

-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
  if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
    self.height = 300;
    [self setupCollectionView];
    self.selectionStyle = UITableViewCellSelectionStyleNone;

    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 0, SCREEN_WIDTH - 20, 1)];
    label.backgroundColor = RGB_COLOR(240, 240, 240);
    [self.contentView addSubview:label];
  }
  return self;
}

-(void)setupCollectionView{

  UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
  layout.itemSize = CGSizeMake(kShowImageCCell_Width, kShowImageCCell_Width);
  self.mediaView = [[UICustomCollectionView alloc]initWithFrame:CGRectMake(15, 10, SCREEN_WIDTH - 2 * 15, 280) collectionViewLayout:layout];
  self.mediaView.scrollEnabled = NO;
  [self.mediaView setBackgroundColor:[UIColor clearColor]];
  [self.mediaView registerNib:[UINib nibWithNibName:NSStringFromClass([RRZShowEditImageCell class]) bundle:nil] forCellWithReuseIdentifier:cellID];
  self.mediaView.dataSource = self;
  self.mediaView.delegate = self;
  [self.contentView addSubview:self.mediaView];
}

-(void)setItem:(ShowEditItem *)item{
  _item = item;

  [self.mediaView reloadData];
}

#pragma mark - UICollectionViewDelegate
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
  NSInteger num = self.item.selectedImages.count;
  return num < 9? num+ 1: num;
}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
  RRZShowEditImageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath];
  if (indexPath.row < self.item.selectedImages.count) {
    cell.img = self.item.selectedImages[indexPath.row];
  }else{
    cell.img = nil;
  }
  cell.deleteBtn.tag = indexPath.row;
  [cell.deleteBtn addTarget:self action:@selector(deleteBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  self.deleteBtn = cell.deleteBtn;
  return cell;
}

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{

  if (indexPath.row == self.item.selectedAssetURLs.count || indexPath.row == self.item.selectedImages.count) {
    if (_addPicturesBlock) {
      _addPicturesBlock();
    }
  }
}

-(void)deleteBtnClick:(UIButton *)btn{
  NSInteger index = btn.tag;
  [self.item.selectedImages removeObjectAtIndex:index];
  [self.item.selectedAssetURLs removeObjectAtIndex:index];
  if (_deleteImageBlock) {
    _deleteImageBlock(_item);
  }
}

@end