提交 f71bdeb7 编写于 作者: Y yixiang

支持SDWebImage自动检查大图,并在图片上做标记

上级 b241246d
//
// UIImageView+DoraemonSDImage.h
// AFNetworking
//
// Created by yixiang on 2019/6/19.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIImageView (DoraemonSDImage)
@end
NS_ASSUME_NONNULL_END
//
// UIImageView+DoraemonSDImage.m
// AFNetworking
//
// Created by yixiang on 2019/6/19.
//
#if __has_include(<SDWebImage/UIImageView+WebCache.h>)
#import "UIImageView+DoraemonSDImage.h"
//#import <SDWebImage/UIImageView+WebCache.h>
#import "NSObject+Doraemon.h"
#import "DoraemonLargeImageDetectionManager.h"
#import <objc/runtime.h>
@implementation UIImageView (DoraemonSDImage)
+ (void)load{
Method originAddObserverMethod = class_getInstanceMethod(self, @selector(sd_setImageWithURL:placeholderImage:options:context:progress:completed:));
if (originAddObserverMethod) {
// 兼容SDWebImage 最新版本 5.0.6
[self doraemon_swizzleInstanceMethodWithOriginSel:@selector(sd_setImageWithURL:placeholderImage:options:context:progress:completed:)
swizzledSel:@selector(doraemon_sd_setImageWithURL:placeholderImage:options:context:progress:completed:)];
}else{
// 兼容SDWebImage 我们使用的版本 3.7.6
[self doraemon_swizzleInstanceMethodWithOriginSel:@selector(sd_setImageWithURL:placeholderImage:options:progress:completed:) swizzledSel:@selector(doraemon_sd_setImageWithURL:placeholderImage:options:progress:completed:)];
}
//估计以后还会兼容其他版本啊。哭。
}
- (void)doraemon_sd_setImageWithURL:(nullable NSURL *)url
placeholderImage:(nullable UIImage *)placeholder
options:(NSUInteger)options
context:(id)context
progress:(id)progressBlock
completed:(void(^)(UIImage * _Nullable image, NSError * _Nullable error, NSInteger cacheType, NSURL * _Nullable imageURL))completedBlock{
__weak typeof(self) weafSelf = self;
if ([DoraemonLargeImageDetectionManager shareInstance].detecting) {
id replaceCompletedBlock = ^(UIImage * _Nullable image, NSError * _Nullable error, NSInteger cacheType, NSURL * _Nullable imageURL){
NSData *data = UIImageJPEGRepresentation(image, 1.0);
if (!data && data.length <= 0) {
data = UIImagePNGRepresentation(image);
}
NSString *drawText = [NSString stringWithFormat:@"url : %@ \n size : %fKB",[url absoluteString],data.length/1024.];
weafSelf.image = [self drawText:drawText inImage:weafSelf.image];
if (completedBlock) {
completedBlock(weafSelf.image, error, cacheType,imageURL);
}
};
[self doraemon_sd_setImageWithURL:url placeholderImage:placeholder options:options context:context progress:progressBlock completed:replaceCompletedBlock];
}else{
[self doraemon_sd_setImageWithURL:url placeholderImage:placeholder options:options context:context progress:progressBlock completed:completedBlock];
}
}
- (void)doraemon_sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(NSUInteger)options progress:(id)progressBlock completed:(void(^)(UIImage *image, NSError *error, NSInteger cacheType, NSURL *imageURL))completedBlock{
__weak typeof(self) weafSelf = self;
if ([DoraemonLargeImageDetectionManager shareInstance].detecting){
id replaceCompletedBlock = ^(UIImage *image, NSError *error, NSInteger cacheType, NSURL *imageURL) {
NSData *data = UIImageJPEGRepresentation(image, 1.0);
if (!data && data.length <= 0) {
data = UIImagePNGRepresentation(image);
}
NSString *drawText = [NSString stringWithFormat:@"url : %@ \n size : %fKB",[url absoluteString],data.length/1024.];
weafSelf.image = [self drawText:drawText inImage:weafSelf.image];
if (completedBlock) {
completedBlock(weafSelf.image, error, cacheType,imageURL);
}
};
[self doraemon_sd_setImageWithURL:url placeholderImage:placeholder options:options progress:progressBlock completed:replaceCompletedBlock];
}else{
[self doraemon_sd_setImageWithURL:url placeholderImage:placeholder options:options progress:progressBlock completed:completedBlock];
}
}
- (UIImage *)drawText:(NSString *)text inImage:(UIImage *)image{
UIFont *font = [UIFont boldSystemFontOfSize:12 * (image.size.height / 230)];
UIGraphicsBeginImageContextWithOptions(image.size, NO, [UIScreen mainScreen].scale);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
[[UIColor redColor] set];
[text drawInRect:CGRectIntegral(rect) withFont:font];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
@end
#endif
......@@ -33,7 +33,7 @@
}];
[[DoraemonManager shareInstance] addStartPlugin:@"StartPlugin"];
[DoraemonManager shareInstance].bigImageDetectionSize = 100 * 1024;//大图检测只检测100K以上的
[DoraemonManager shareInstance].bigImageDetectionSize = 10 * 1024;//大图检测只检测100K以上的
[[DoraemonManager shareInstance] install];
[[DoraemonManager shareInstance] addANRBlock:^(NSDictionary *anrDic) {
......
......@@ -8,6 +8,7 @@
#import "DoraemonDemoImageShowViewController.h"
#import "DoraemonDefine.h"
#import <SDWebImage/UIImageView+WebCache.h>
@interface DoraemonDemoImageShowViewController ()
......@@ -20,7 +21,7 @@
- (void)viewDidLoad {
[super viewDidLoad];
[self setOriginalImage:_image];
[self.imageView sd_setImageWithURL:[NSURL URLWithString:@"http://05imgmini.eastday.com/mobile/20190617/2019061519_87d0d825dc3440d4ab2a3c4ca33380f1_8193_mwpm_03201609.jpg"]];
}
- (void)setOriginalImage:(UIImage *)originalImage {
......
......@@ -9,7 +9,7 @@
#import "DoraemonDemoImageViewController.h"
#import "DoraemonDefine.h"
#import "DoraemonDemoImageShowViewController.h"
#import <SDWebImage/SDWebImage.h>
//#import <SDWebImage/SDImageCache.h>
#import "DoraemonUIWebViewViewController.h"
#import "DoraemonWKWebViewViewController.h"
......@@ -65,12 +65,12 @@
- (void)sdWebImage{
NSURL *imageUrl = [NSURL URLWithString:self.picUrl];
[[SDWebImageManager sharedManager] loadImageWithURL:imageUrl options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
//
} completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) {
//
[self showImage:image];
}];
// [[SDWebImageManager sharedManager] loadImageWithURL:imageUrl options:SDWebImageRetryFailed progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
// //
// } completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) {
// //
// [self showImage:image];
// }];
}
- (void)uiWebView{
......
......@@ -14,5 +14,6 @@ end
target :'DoraemonKitDemo' do
pod 'DoraemonKit', :subspecs => ['Core','WithLogger','WithGPS','WithLoad','WithWeex'], :path => '../../'
pod 'AFNetworking','2.6.3'
pod 'SDWebImage'
pod 'SDWebImage','3.7.6'
##pod 'SDWebImage', '5.0.6'
end
......@@ -59,9 +59,9 @@ PODS:
- fishhook (0.2)
- PNChart (0.8.9):
- UICountingLabel (~> 1.2.0)
- SDWebImage (5.0.6):
- SDWebImage/Core (= 5.0.6)
- SDWebImage/Core (5.0.6)
- SDWebImage (3.7.6):
- SDWebImage/Core (= 3.7.6)
- SDWebImage/Core (3.7.6)
- SocketRocket (0.5.1)
- UICountingLabel (1.2.0)
- "UITextView+Placeholder (1.2.1)"
......@@ -77,7 +77,7 @@ DEPENDENCIES:
- DoraemonKit/WithLoad (from `../../`)
- DoraemonKit/WithLogger (from `../../`)
- DoraemonKit/WithWeex (from `../../`)
- SDWebImage
- SDWebImage (= 3.7.6)
SPEC REPOS:
https://github.com/cocoapods/specs.git:
......@@ -104,13 +104,13 @@ SPEC CHECKSUMS:
DoraemonKit: 800be28118fb88d57eadbded1222746d7c55cb8a
fishhook: ea19933abfe8f2f52c55fd8b6e2718467d3ebc89
PNChart: 84774d225c2126ded6c93d4dbe6ae98c3a73c2d2
SDWebImage: 920f1a2ff1ca8296ad34f6e0510a1ef1d70ac965
SDWebImage: c325cf02c30337336b95beff20a13df489ec0ec9
SocketRocket: d57c7159b83c3c6655745cd15302aa24b6bae531
UICountingLabel: 1db4e7d023e1762171eb226d6dff47a7a84f27aa
"UITextView+Placeholder": 0c3efd97f37ea64bde7f34cc6e90fe02e87b3909
WeexSDK: 5bd35be9c035c67c84d1ba15712360bb0d0ba6b5
WXDevtool: 833dd3e835df1f5f278fc8865c865d48196bfdab
PODFILE CHECKSUM: 23f7937440f2143e626b191777e4b7a5f6064ed9
PODFILE CHECKSUM: e9faca58dae8c6c0cc8affa40011ac98b192bf6a
COCOAPODS: 1.6.2
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册