CollectionImageCell.m 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. //
  2. // CollectionImageCell.m
  3. // 乐销
  4. //
  5. // Created by 隋林栋 on 2017/3/14.
  6. // Copyright © 2017年 ping. All rights reserved.
  7. //
  8. #import "CollectionImageCell.h"
  9. #import "XG_AssetModel.h"
  10. #import "XG_AssetPickerManager.h"
  11. #import "UIView+XGAdd.h"
  12. @implementation CollectionImageCell
  13. #pragma mark 懒加载
  14. - (UIButton *)btnDelete{
  15. if (_btnDelete == nil) {
  16. _btnDelete = [UIButton buttonWithType:UIButtonTypeCustom];
  17. [_btnDelete setImage:[UIImage imageNamed:@"icon_delete2"] forState:(UIControlStateNormal)];
  18. _btnDelete.widthHeight = XY(W(20),W(20));
  19. _btnDelete.hidden = true;
  20. }
  21. return _btnDelete;
  22. }
  23. - (UIImageView *)ivImage{
  24. if (_ivImage == nil) {
  25. _ivImage = [UIImageView new];
  26. _ivImage.backgroundColor = [UIColor clearColor];
  27. _ivImage.image = nil;
  28. _ivImage.contentMode = UIViewContentModeScaleAspectFill;
  29. _ivImage.clipsToBounds = true;
  30. _ivImage.widthHeight = XY(W(90),W(90));
  31. _ivImage.leftTop = XY(0,W(15));
  32. }
  33. return _ivImage;
  34. }
  35. - (UILabel *)labelTitleBottom{
  36. if (!_labelTitleBottom) {
  37. _labelTitleBottom = [UILabel new];
  38. _labelTitleBottom.textColor = COLOR_TEXT;
  39. _labelTitleBottom.fontNum = F(13);
  40. _labelTitleBottom.numLimit = 4;
  41. _labelTitleBottom.backgroundColor = [UIColor clearColor];
  42. _labelTitleBottom.hidden = true;
  43. }
  44. return _labelTitleBottom;
  45. }
  46. #pragma mark 获取高度
  47. + (CGSize)fetchHeight{
  48. static CollectionImageCell * cell;
  49. if (cell == nil) {
  50. cell = [self new];
  51. }
  52. return [cell resetCellWithModel:nil];
  53. }
  54. + (CGSize)fetchHeightWithTitle{
  55. static CollectionImageCell * cell;
  56. if (cell == nil) {
  57. cell = [self new];
  58. }
  59. cell.isShowTitleBottom = true;
  60. return [cell resetCellWithModel:nil];
  61. }
  62. #pragma mark 初始化
  63. - (instancetype)initWithFrame:(CGRect)frame{
  64. self = [super initWithFrame:frame];
  65. if (self) {
  66. self.contentView.backgroundColor = [UIColor clearColor];
  67. self.backgroundColor = [UIColor clearColor];
  68. [self.contentView addSubview:self.ivImage];
  69. [self.contentView addSubview:self.btnDelete];
  70. [self.contentView addSubview:self.labelTitleBottom];
  71. }
  72. return self;
  73. }
  74. - (void)setModel:(XG_AssetModel *)model{
  75. _model = model;
  76. self.ivImage.leftTop = XY(0,0);
  77. //label bottom
  78. self.labelTitleBottom.centerXTop = XY(self.ivImage.centerX, self.ivImage.bottom + W(5));
  79. self.labelTitleBottom.hidden = !self.isShowTitleBottom;
  80. //btn delete
  81. self.btnDelete.rightTop = XY(self.ivImage.right-5,self.ivImage.top+5);
  82. if (_model.isPlaceholder) {
  83. self.ivImage.image = [UIImage imageNamed:isStr(self.imgName)?UnPackStr(self.imgName):@"addphoto"];
  84. self.btnDelete.hidden = YES;
  85. }else{
  86. self.btnDelete.hidden = NO;
  87. if (model.asset) {//本地图片
  88. [[XG_AssetPickerManager manager] getPhotoWithAsset1:_model.asset completion:^(UIImage *photo, NSDictionary *info) {
  89. self.ivImage.image = photo;
  90. if (self.blockModel) {
  91. self.blockModel(photo);
  92. }
  93. }];
  94. }else{//网络图片
  95. UIImage * imageSmallCache = [[SDWebImageManager sharedManager].imageCache imageFromDiskCacheForKey:model.url];
  96. if (!imageSmallCache) {
  97. imageSmallCache = [[SDWebImageManager sharedManager].imageCache imageFromDiskCacheForKey:model.url];
  98. }
  99. [self.ivImage sd_setImageWithURL:[NSURL URLWithString:model.url] placeholderImage:[UIImage imageNamed:@""]];
  100. }
  101. }
  102. }
  103. - (void)resetWithModel:(XG_AssetModel *)model{
  104. _model = model;
  105. self.ivImage.leftTop = XY(0,0);
  106. //label bottom
  107. self.labelTitleBottom.centerXTop = XY(self.ivImage.centerX, self.ivImage.bottom + W(5));
  108. self.labelTitleBottom.hidden = !self.isShowTitleBottom;
  109. //btn delete
  110. self.btnDelete.rightTop = XY(self.ivImage.right-5,self.ivImage.top+5);
  111. if (model.isPlaceholder) {
  112. self.ivImage.image = [UIImage imageNamed:@"addphoto"];
  113. self.btnDelete.hidden = YES;
  114. }else{
  115. self.btnDelete.hidden = NO;
  116. [[XG_AssetPickerManager manager] getPhotoWithAsset:_model.asset photoWidth:self.frame.size.width completion:^(UIImage *photo, NSDictionary *info) {
  117. self.ivImage.image = photo;
  118. }];
  119. self.height =self.ivImage.height + W(15)+(self.isShowTitleBottom?self.labelTitleBottom.bottom - self.ivImage.bottom:0);
  120. }
  121. }
  122. #pragma mark 刷新cell
  123. - (CGSize)resetCellWithModel:(ModelImage *)model{
  124. // self.model = model;
  125. self.btnDelete.hidden = false;
  126. //iv
  127. self.ivImage.leftTop = XY(W(15),0);
  128. [self.ivImage sd_setImageWithModel:model placeholderImageName:IMAGE_BIG_DEFAULT];
  129. //label bottom
  130. [self.labelTitleBottom fitTitle:UnPackStr(model.desc) variable:0];
  131. self.labelTitleBottom.centerXTop = XY(self.ivImage.centerX, self.ivImage.bottom + W(5));
  132. self.labelTitleBottom.hidden = !self.isShowTitleBottom;
  133. //btn delete
  134. self.btnDelete.rightTop = XY(self.ivImage.right-5,self.ivImage.top+5);
  135. return CGSizeMake(self.ivImage.width, self.ivImage.height + W(15)+(self.isShowTitleBottom?self.labelTitleBottom.bottom - self.ivImage.bottom:0));
  136. }
  137. //照相机 cell
  138. - (void)resetCellWithCamera{
  139. [self resetCellWithModel:^(){
  140. ModelImage * model = [ModelImage new];
  141. model.desc = @"添加";
  142. return model;
  143. }()];
  144. self.ivImage.image = [UIImage imageNamed:isStr(self.imgName)?self.imgName:@"addphoto"];
  145. self.btnDelete.hidden = true;
  146. }
  147. @end
  148. @implementation CollectionCustomeImageSizeCell
  149. @synthesize ivImage = _ivImage1;
  150. - (UIImageView *)ivImage{
  151. if (_ivImage1 == nil) {
  152. _ivImage1 = [UIImageView new];
  153. _ivImage1.backgroundColor = [UIColor clearColor];
  154. _ivImage1.image = nil;
  155. _ivImage1.contentMode = UIViewContentModeScaleAspectFill;
  156. _ivImage1.clipsToBounds = true;
  157. _ivImage1.widthHeight = XY(W(105),W(105));
  158. _ivImage1.leftTop = XY(0,W(15));
  159. }
  160. return _ivImage1;
  161. }
  162. #pragma mark 获取高度
  163. + (CGSize)fetchHeight{
  164. static CollectionImageCell * cell;
  165. if (cell == nil) {
  166. cell = [self new];
  167. }
  168. return [cell resetCellWithModel:nil];
  169. }
  170. + (CGSize)fetchHeightWithTitle{
  171. static CollectionImageCell * cell;
  172. if (cell == nil) {
  173. cell = [self new];
  174. }
  175. cell.isShowTitleBottom = true;
  176. return [cell resetCellWithModel:nil];
  177. }
  178. @end
  179. @implementation CollectionCustomeImageReplyCell
  180. @synthesize ivImage = _ivImage1;
  181. - (UIImageView *)ivImage{
  182. if (_ivImage1 == nil) {
  183. _ivImage1 = [UIImageView new];
  184. _ivImage1.backgroundColor = [UIColor clearColor];
  185. _ivImage1.contentMode = UIViewContentModeScaleAspectFill;
  186. _ivImage1.clipsToBounds = true;
  187. _ivImage1.widthHeight = XY(W(105),W(105));
  188. _ivImage1.leftTop = XY(0,0);
  189. }
  190. return _ivImage1;
  191. }
  192. #pragma mark 刷新cell
  193. - (CGSize)resetCellWithModel:(ModelImage *)model{
  194. //iv
  195. self.ivImage.leftTop = XY(W(5),0);
  196. [self.ivImage sd_setImageWithModel:model placeholderImageName:IMAGE_BIG_DEFAULT];
  197. //label bottom
  198. [self.labelTitleBottom fitTitle:UnPackStr(model.desc) variable:0];
  199. self.labelTitleBottom.centerXTop = XY(self.ivImage.centerX, self.ivImage.bottom + W(5));
  200. self.labelTitleBottom.hidden = !self.isShowTitleBottom;
  201. //btn delete
  202. self.btnDelete.centerXCenterY = XY(self.ivImage.right,self.ivImage.top);
  203. return CGSizeMake(self.ivImage.width+W(5), self.ivImage.height+(self.isShowTitleBottom?self.labelTitleBottom.bottom - self.ivImage.bottom + W(15):0));
  204. }
  205. #pragma mark 获取高度
  206. + (CGSize)fetchHeight{
  207. static CollectionImageCell * cell;
  208. if (cell == nil) {
  209. cell = [self new];
  210. }
  211. return [cell resetCellWithModel:nil];
  212. }
  213. + (CGSize)fetchHeightWithTitle{
  214. static CollectionImageCell * cell;
  215. if (cell == nil) {
  216. cell = [self new];
  217. }
  218. cell.isShowTitleBottom = true;
  219. return [cell resetCellWithModel:nil];
  220. }
  221. @end