JXCategoryImageView.m 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. //
  2. // JXCategoryImageView.m
  3. // JXCategoryView
  4. //
  5. // Created by jiaxin on 2018/8/20.
  6. // Copyright © 2018年 jiaxin. All rights reserved.
  7. //
  8. #import "JXCategoryImageView.h"
  9. #import "JXCategoryFactory.h"
  10. @implementation JXCategoryImageView
  11. - (void)dealloc {
  12. self.loadImageBlock = nil;
  13. self.loadImageCallback = nil;
  14. }
  15. - (void)initializeData {
  16. [super initializeData];
  17. _imageSize = CGSizeMake(20, 20);
  18. _imageZoomEnabled = NO;
  19. _imageZoomScale = 1.2;
  20. _imageCornerRadius = 0;
  21. }
  22. - (Class)preferredCellClass {
  23. return [JXCategoryImageCell class];
  24. }
  25. - (void)refreshDataSource {
  26. NSUInteger count = 0;
  27. if (self.imageInfoArray.count > 0) {
  28. count = self.imageInfoArray.count;
  29. }else if (self.imageNames.count > 0) {
  30. count = self.imageNames.count;
  31. }else {
  32. count = self.imageURLs.count;
  33. }
  34. NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:count];
  35. for (int i = 0; i < count; i++) {
  36. JXCategoryImageCellModel *cellModel = [[JXCategoryImageCellModel alloc] init];
  37. [tempArray addObject:cellModel];
  38. }
  39. self.dataSource = [NSArray arrayWithArray:tempArray];
  40. }
  41. - (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel {
  42. [super refreshSelectedCellModel:selectedCellModel unselectedCellModel:unselectedCellModel];
  43. JXCategoryImageCellModel *myUnselectedCellModel = (JXCategoryImageCellModel *)unselectedCellModel;
  44. myUnselectedCellModel.imageZoomScale = 1.0;
  45. JXCategoryImageCellModel *myselectedCellModel = (JXCategoryImageCellModel *)selectedCellModel;
  46. myselectedCellModel.imageZoomScale = self.imageZoomScale;
  47. }
  48. - (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index {
  49. [super refreshCellModel:cellModel index:index];
  50. JXCategoryImageCellModel *myCellModel = (JXCategoryImageCellModel *)cellModel;
  51. myCellModel.loadImageBlock = self.loadImageBlock;
  52. myCellModel.loadImageCallback = self.loadImageCallback;
  53. myCellModel.imageSize = self.imageSize;
  54. myCellModel.imageCornerRadius = self.imageCornerRadius;
  55. if (self.imageInfoArray && self.imageInfoArray.count != 0) {
  56. myCellModel.imageInfo = self.imageInfoArray[index];
  57. }else if (self.imageNames && self.imageNames.count != 0) {
  58. myCellModel.imageName = self.imageNames[index];
  59. }else if (self.imageURLs && self.imageURLs.count != 0) {
  60. myCellModel.imageURL = self.imageURLs[index];
  61. }
  62. if (self.selectedImageInfoArray && self.selectedImageInfoArray.count != 0) {
  63. myCellModel.selectedImageInfo = self.selectedImageInfoArray[index];
  64. }else if (self.selectedImageNames && self.selectedImageNames.count != 0) {
  65. myCellModel.selectedImageName = self.selectedImageNames[index];
  66. }else if (self.selectedImageURLs && self.selectedImageURLs.count != 0) {
  67. myCellModel.selectedImageURL = self.selectedImageURLs[index];
  68. }
  69. myCellModel.imageZoomEnabled = self.imageZoomEnabled;
  70. myCellModel.imageZoomScale = ((index == self.selectedIndex) ? self.imageZoomScale : 1.0);
  71. }
  72. - (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel rightCellModel:(JXCategoryBaseCellModel *)rightCellModel ratio:(CGFloat)ratio {
  73. [super refreshLeftCellModel:leftCellModel rightCellModel:rightCellModel ratio:ratio];
  74. JXCategoryImageCellModel *leftModel = (JXCategoryImageCellModel *)leftCellModel;
  75. JXCategoryImageCellModel *rightModel = (JXCategoryImageCellModel *)rightCellModel;
  76. if (self.isImageZoomEnabled) {
  77. leftModel.imageZoomScale = [JXCategoryFactory interpolationFrom:self.imageZoomScale to:1.0 percent:ratio];
  78. rightModel.imageZoomScale = [JXCategoryFactory interpolationFrom:1.0 to:self.imageZoomScale percent:ratio];
  79. }
  80. }
  81. - (CGFloat)preferredCellWidthAtIndex:(NSInteger)index {
  82. if (self.cellWidth == JXCategoryViewAutomaticDimension) {
  83. return self.imageSize.width;
  84. }
  85. return self.cellWidth;
  86. }
  87. @end