UIImageView+Category.m 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //
  2. // UIImageView+Category.m
  3. // 乐销
  4. //
  5. // Created by 隋林栋 on 2017/12/4.
  6. // Copyright © 2017年 ping. All rights reserved.
  7. //
  8. #import "UIImageView+Category.h"
  9. //#import "OtherHomeVC.h"
  10. static const char modelUIImageViewKey = '\0';
  11. static const char identityUIImageViewKey = '\0';
  12. @implementation UIImageView (Category)
  13. #pragma mark run time
  14. - (void)setModel:(id)model{
  15. objc_setAssociatedObject(self, &modelUIImageViewKey, model, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  16. }
  17. - (id)model{
  18. id model = objc_getAssociatedObject(self, &modelUIImageViewKey);
  19. return model;
  20. }
  21. - (void)setIdentity:(double)identity{
  22. objc_setAssociatedObject(self, &identityUIImageViewKey, [NSNumber numberWithDouble:identity], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  23. }
  24. - (double)identity{
  25. NSNumber * numID = objc_getAssociatedObject(self, &identityUIImageViewKey);
  26. if (numID && [numID isKindOfClass:[NSNumber class]]) {
  27. return [numID doubleValue];
  28. }
  29. return 0;
  30. }
  31. - (void)addClickJumpToVCWithModel:(id)model{
  32. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];
  33. [self addGestureRecognizer:tap];
  34. self.userInteractionEnabled = true;
  35. self.model = model;
  36. }
  37. #pragma mark click
  38. - (void)tapAction:(UITapGestureRecognizer *)sender {
  39. // OtherHomeVC *vc = [OtherHomeVC new];
  40. // vc.userId = self.model;
  41. //// WEAKSELF
  42. //// vc.blockRefresh = ^(){
  43. //// BaseTableVC *vc= (BaseTableVC *)[weakSelf fetchVC];
  44. //// if ([vc isKindOfClass:[BaseTableVC class]]) {
  45. //// [vc requestList];
  46. //// }
  47. //// };
  48. //// vc.blockBack = ^(UIViewController *VC){
  49. //// BaseTableVC *vc= (BaseTableVC *)[weakSelf fetchVC];
  50. //// if ([vc isKindOfClass:[BaseTableVC class]]) {
  51. //// [vc requestList];
  52. //// }
  53. //// };
  54. // [GB_Nav pushViewController:vc animated:true];
  55. }
  56. #pragma mark sdweb image category: show product image
  57. - (void)sd_setProductImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder{
  58. WEAKSELF
  59. [self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL){
  60. if (!weakSelf) {
  61. return;
  62. }
  63. STRONGSELF
  64. if (image) {
  65. self.image = image;
  66. self.contentMode = image.size.width>image.size.height?UIViewContentModeScaleAspectFill:UIViewContentModeScaleAspectFit;
  67. }else{
  68. }
  69. }];
  70. }
  71. #pragma mark show image with modelImage
  72. - (void)sd_setImageWithModel:(ModelImage *)model placeholderImageName:(NSString *)placeholderName{
  73. [self sd_setImageWithModel:model placeholderImageName:placeholderName useSmaleImage:false];
  74. }
  75. - (void)sd_setSmallImageWithModel:(ModelImage *)model placeholderImageName:(NSString *)placeholderName{
  76. [self sd_setImageWithModel:model placeholderImageName:placeholderName useSmaleImage:true];
  77. }
  78. - (void)sd_setImageWithModel:(ModelImage *)model placeholderImageName:(NSString *)placeholderName useSmaleImage:(BOOL)useSmallImage{
  79. if (isStr(model.image.imageURL)) {//本地图片缓存 抓取高清图片
  80. UIImage * imageCache = [[SDWebImageManager sharedManager].imageCache imageFromDiskCacheForKey:model.image.imageURL];
  81. if (imageCache) {
  82. self.image = imageCache;
  83. return;
  84. }
  85. }
  86. if (model.image) {//本地图片
  87. self.image = model.image;
  88. }else{//网络图片
  89. UIImage * imageSmallCache = [[SDWebImageManager sharedManager].imageCache imageFromDiskCacheForKey:model.url];
  90. if (!imageSmallCache) {
  91. imageSmallCache = [[SDWebImageManager sharedManager].imageCache imageFromDiskCacheForKey:model.url];
  92. }
  93. [self sd_setImageWithURL:[NSURL URLWithString:useSmallImage?model.url:model.url] placeholderImage:imageSmallCache?:[UIImage imageNamed:placeholderName]];
  94. }
  95. }
  96. @end