// // CollectionImageCell.m // 乐销 // // Created by 隋林栋 on 2017/3/14. // Copyright © 2017年 ping. All rights reserved. // #import "CollectionImageCell.h" #import "XG_AssetModel.h" #import "XG_AssetPickerManager.h" #import "UIView+XGAdd.h" @implementation CollectionImageCell #pragma mark 懒加载 - (UIButton *)btnDelete{ if (_btnDelete == nil) { _btnDelete = [UIButton buttonWithType:UIButtonTypeCustom]; [_btnDelete setImage:[UIImage imageNamed:@"icon_delete2"] forState:(UIControlStateNormal)]; _btnDelete.widthHeight = XY(W(20),W(20)); _btnDelete.hidden = true; } return _btnDelete; } - (UIImageView *)ivImage{ if (_ivImage == nil) { _ivImage = [UIImageView new]; _ivImage.backgroundColor = [UIColor clearColor]; _ivImage.image = nil; _ivImage.contentMode = UIViewContentModeScaleAspectFill; _ivImage.clipsToBounds = true; _ivImage.widthHeight = XY(W(90),W(90)); _ivImage.leftTop = XY(0,W(15)); } return _ivImage; } - (UILabel *)labelTitleBottom{ if (!_labelTitleBottom) { _labelTitleBottom = [UILabel new]; _labelTitleBottom.textColor = COLOR_TEXT; _labelTitleBottom.fontNum = F(13); _labelTitleBottom.numLimit = 4; _labelTitleBottom.backgroundColor = [UIColor clearColor]; _labelTitleBottom.hidden = true; } return _labelTitleBottom; } #pragma mark 获取高度 + (CGSize)fetchHeight{ static CollectionImageCell * cell; if (cell == nil) { cell = [self new]; } return [cell resetCellWithModel:nil]; } + (CGSize)fetchHeightWithTitle{ static CollectionImageCell * cell; if (cell == nil) { cell = [self new]; } cell.isShowTitleBottom = true; return [cell resetCellWithModel:nil]; } #pragma mark 初始化 - (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { self.contentView.backgroundColor = [UIColor clearColor]; self.backgroundColor = [UIColor clearColor]; [self.contentView addSubview:self.ivImage]; [self.contentView addSubview:self.btnDelete]; [self.contentView addSubview:self.labelTitleBottom]; } return self; } - (void)setModel:(XG_AssetModel *)model{ _model = model; self.ivImage.leftTop = XY(0,0); //label bottom self.labelTitleBottom.centerXTop = XY(self.ivImage.centerX, self.ivImage.bottom + W(5)); self.labelTitleBottom.hidden = !self.isShowTitleBottom; //btn delete self.btnDelete.rightTop = XY(self.ivImage.right-5,self.ivImage.top+5); if (_model.isPlaceholder) { self.ivImage.image = [UIImage imageNamed:isStr(self.imgName)?UnPackStr(self.imgName):@"addphoto"]; self.btnDelete.hidden = YES; }else{ self.btnDelete.hidden = NO; if (model.asset) {//本地图片 [[XG_AssetPickerManager manager] getPhotoWithAsset1:_model.asset completion:^(UIImage *photo, NSDictionary *info) { self.ivImage.image = photo; if (self.blockModel) { self.blockModel(photo); } }]; }else{//网络图片 UIImage * imageSmallCache = [[SDWebImageManager sharedManager].imageCache imageFromDiskCacheForKey:model.url]; if (!imageSmallCache) { imageSmallCache = [[SDWebImageManager sharedManager].imageCache imageFromDiskCacheForKey:model.url]; } [self.ivImage sd_setImageWithURL:[NSURL URLWithString:model.url] placeholderImage:[UIImage imageNamed:@""]]; } } } - (void)resetWithModel:(XG_AssetModel *)model{ _model = model; self.ivImage.leftTop = XY(0,0); //label bottom self.labelTitleBottom.centerXTop = XY(self.ivImage.centerX, self.ivImage.bottom + W(5)); self.labelTitleBottom.hidden = !self.isShowTitleBottom; //btn delete self.btnDelete.rightTop = XY(self.ivImage.right-5,self.ivImage.top+5); if (model.isPlaceholder) { self.ivImage.image = [UIImage imageNamed:@"addphoto"]; self.btnDelete.hidden = YES; }else{ self.btnDelete.hidden = NO; [[XG_AssetPickerManager manager] getPhotoWithAsset:_model.asset photoWidth:self.frame.size.width completion:^(UIImage *photo, NSDictionary *info) { self.ivImage.image = photo; }]; self.height =self.ivImage.height + W(15)+(self.isShowTitleBottom?self.labelTitleBottom.bottom - self.ivImage.bottom:0); } } #pragma mark 刷新cell - (CGSize)resetCellWithModel:(ModelImage *)model{ // self.model = model; self.btnDelete.hidden = false; //iv self.ivImage.leftTop = XY(W(15),0); [self.ivImage sd_setImageWithModel:model placeholderImageName:IMAGE_BIG_DEFAULT]; //label bottom [self.labelTitleBottom fitTitle:UnPackStr(model.desc) variable:0]; self.labelTitleBottom.centerXTop = XY(self.ivImage.centerX, self.ivImage.bottom + W(5)); self.labelTitleBottom.hidden = !self.isShowTitleBottom; //btn delete self.btnDelete.rightTop = XY(self.ivImage.right-5,self.ivImage.top+5); return CGSizeMake(self.ivImage.width, self.ivImage.height + W(15)+(self.isShowTitleBottom?self.labelTitleBottom.bottom - self.ivImage.bottom:0)); } //照相机 cell - (void)resetCellWithCamera{ [self resetCellWithModel:^(){ ModelImage * model = [ModelImage new]; model.desc = @"添加"; return model; }()]; self.ivImage.image = [UIImage imageNamed:isStr(self.imgName)?self.imgName:@"addphoto"]; self.btnDelete.hidden = true; } @end @implementation CollectionCustomeImageSizeCell @synthesize ivImage = _ivImage1; - (UIImageView *)ivImage{ if (_ivImage1 == nil) { _ivImage1 = [UIImageView new]; _ivImage1.backgroundColor = [UIColor clearColor]; _ivImage1.image = nil; _ivImage1.contentMode = UIViewContentModeScaleAspectFill; _ivImage1.clipsToBounds = true; _ivImage1.widthHeight = XY(W(105),W(105)); _ivImage1.leftTop = XY(0,W(15)); } return _ivImage1; } #pragma mark 获取高度 + (CGSize)fetchHeight{ static CollectionImageCell * cell; if (cell == nil) { cell = [self new]; } return [cell resetCellWithModel:nil]; } + (CGSize)fetchHeightWithTitle{ static CollectionImageCell * cell; if (cell == nil) { cell = [self new]; } cell.isShowTitleBottom = true; return [cell resetCellWithModel:nil]; } @end @implementation CollectionCustomeImageReplyCell @synthesize ivImage = _ivImage1; - (UIImageView *)ivImage{ if (_ivImage1 == nil) { _ivImage1 = [UIImageView new]; _ivImage1.backgroundColor = [UIColor clearColor]; _ivImage1.contentMode = UIViewContentModeScaleAspectFill; _ivImage1.clipsToBounds = true; _ivImage1.widthHeight = XY(W(105),W(105)); _ivImage1.leftTop = XY(0,0); } return _ivImage1; } #pragma mark 刷新cell - (CGSize)resetCellWithModel:(ModelImage *)model{ //iv self.ivImage.leftTop = XY(W(5),0); [self.ivImage sd_setImageWithModel:model placeholderImageName:IMAGE_BIG_DEFAULT]; //label bottom [self.labelTitleBottom fitTitle:UnPackStr(model.desc) variable:0]; self.labelTitleBottom.centerXTop = XY(self.ivImage.centerX, self.ivImage.bottom + W(5)); self.labelTitleBottom.hidden = !self.isShowTitleBottom; //btn delete self.btnDelete.centerXCenterY = XY(self.ivImage.right,self.ivImage.top); return CGSizeMake(self.ivImage.width+W(5), self.ivImage.height+(self.isShowTitleBottom?self.labelTitleBottom.bottom - self.ivImage.bottom + W(15):0)); } #pragma mark 获取高度 + (CGSize)fetchHeight{ static CollectionImageCell * cell; if (cell == nil) { cell = [self new]; } return [cell resetCellWithModel:nil]; } + (CGSize)fetchHeightWithTitle{ static CollectionImageCell * cell; if (cell == nil) { cell = [self new]; } cell.isShowTitleBottom = true; return [cell resetCellWithModel:nil]; } @end