MineListMindImgView.m 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. //
  2. // MineListMindImgView.m
  3. // 乐销
  4. //
  5. // Created by 隋林栋 on 2017/10/23.
  6. //Copyright © 2017年 ping. All rights reserved.
  7. //
  8. #import "MineListMindImgView.h"
  9. //detail big image view
  10. #import "ImageDetailBigView.h"
  11. @interface MineListMindImgView()
  12. @property (nonatomic, assign) CGFloat imgWidth;
  13. @property (nonatomic, assign) CGFloat imgHeight;
  14. @property (nonatomic, strong) UILabel *labelNum;
  15. @end
  16. @implementation MineListMindImgView
  17. #pragma mark lazy init
  18. - (NSMutableDictionary *)dicImages{
  19. if (!_dicImages) {
  20. _dicImages = [NSMutableDictionary new];
  21. }
  22. return _dicImages;
  23. }
  24. - (NSArray *)aryModels{
  25. if (!_aryModels) {
  26. _aryModels = [NSArray new];
  27. }
  28. return _aryModels;
  29. }
  30. - (UILabel *)labelNum{
  31. if (!_labelNum) {
  32. _labelNum = [UILabel new];
  33. _labelNum.fontNum = F(23);
  34. _labelNum.textColor = [UIColor whiteColor];
  35. _labelNum.textAlignment = NSTextAlignmentCenter;
  36. _labelNum.userInteractionEnabled = true;
  37. _labelNum.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5];
  38. _labelNum.hidden = true;
  39. }
  40. return _labelNum;
  41. }
  42. - (UIImageView *)imageWithIndex:(NSInteger )index{
  43. UIImageView * iv = [self.dicImages objectForKey:[NSString stringWithFormat:@"%ld",index]];
  44. if (!iv) {
  45. iv = [UIImageView new];
  46. iv.contentMode = UIViewContentModeScaleAspectFill;
  47. iv.clipsToBounds = true;
  48. [self.dicImages setObject:iv forKey:[NSString stringWithFormat:@"%ld",index]];
  49. iv.tag = index;
  50. iv.userInteractionEnabled = true;
  51. UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(imageClick:)];
  52. [iv addGestureRecognizer:tap];
  53. }
  54. return iv;
  55. }
  56. - (CGFloat)imgWidth{
  57. switch (self.aryModels.count) {
  58. case 0:
  59. return 0;
  60. break;
  61. case 1:
  62. return W(135);
  63. break;
  64. case 2:
  65. case 4:
  66. return W(103);
  67. break;
  68. default:
  69. return W(103);
  70. }
  71. return 0;
  72. }
  73. - (CGFloat)imgHeight{
  74. switch (self.aryModels.count) {
  75. case 0:
  76. return 0;
  77. break;
  78. case 1:
  79. return W(240);
  80. break;
  81. case 2:
  82. case 4:
  83. return W(103);
  84. break;
  85. default:
  86. return W(103);
  87. break;
  88. }
  89. return 0;
  90. }
  91. #pragma mark init
  92. - (instancetype)initWithFrame:(CGRect)frame{
  93. self = [super initWithFrame:frame];
  94. if (self) {
  95. self.imgSpace = W(9);
  96. self.leftInteral = W(12);
  97. self.topInteral = W(0);
  98. self.width = SCREEN_WIDTH;
  99. self.numLimit = 9;
  100. }
  101. return self;
  102. }
  103. #pragma mark 刷新view
  104. - (void)resetViewWithArray:(NSArray *)array{
  105. [self resetViewWithArray:array totalNum:array.count];
  106. }
  107. - (void)resetViewWithArray:(NSArray *)array totalNum:(double)totalNum{
  108. [self removeSubViewWithTag:TAG_LINE];
  109. self.aryModels = array;
  110. //刷新view
  111. CGFloat top = self.topInteral;
  112. CGFloat left = self.leftInteral;
  113. self.height = 0;
  114. self.labelNum.hidden = true;
  115. NSInteger numItems = totalNum == 4?4:MIN(totalNum, self.numLimit);
  116. for (int i = 0; i < numItems; i++) {
  117. ModelImage *model = array[i];
  118. UIImageView *img = [self imageWithIndex:i];
  119. img.frame = CGRectMake(left, top, self.imgWidth, self.imgHeight);
  120. [img sd_setImageWithURL:model.url==nil?nil:[NSURL URLWithString:(i==0 && totalNum == 1)?model.url:model.url] placeholderImage:[UIImage imageNamed:IMAGE_BIG_DEFAULT]];
  121. img.contentMode = UIViewContentModeScaleAspectFill;
  122. img.tag = TAG_LINE;
  123. [self addSubview:img];
  124. left = img.right + self.imgSpace;
  125. if (totalNum == 2){
  126. left = img.right + self.imgSpace;
  127. }else if (totalNum == 4 ) {
  128. if (i == 1) {
  129. left = self.leftInteral;
  130. top = img.bottom + self.imgSpace;
  131. }
  132. }else if ((i+1)%3 == 0 ){
  133. left = self.leftInteral;
  134. top = img.bottom + self.imgSpace;
  135. }else if (totalNum ==1){
  136. img.centerX = SCREEN_WIDTH/2;
  137. }
  138. self.height = img.bottom + self.bottomInterval;
  139. //show label num
  140. if (i == self.numLimit - 1 && totalNum > self.numLimit && totalNum != 4) {
  141. self.labelNum.text = [NSString stringWithFormat:@"+%ld",(NSInteger)totalNum - self.numLimit];
  142. self.labelNum.widthHeight = img.widthHeight;
  143. [img addSubview:self.labelNum];
  144. self.labelNum.hidden = false;
  145. }
  146. }
  147. }
  148. #pragma mark image Click
  149. - (void)imageClick:(UITapGestureRecognizer *)tap{
  150. UIImageView * view = (UIImageView *)tap.view;
  151. ImageDetailBigView * detailView = [ImageDetailBigView new];
  152. [detailView resetView:self.aryModels.tmpMuAry isEdit:false index: view.tag];
  153. [detailView showInView:GB_Nav.lastVC.view imageViewShow:view];
  154. }
  155. @end