iOS:Support SDWebImage

This commit is contained in:
pengfeizhou
2021-01-28 20:55:03 +08:00
committed by osborn
parent a68155a0ec
commit 4ad278e9c9
5 changed files with 96 additions and 187 deletions

View File

@@ -23,6 +23,7 @@
#import "DoricImageNode.h"
#import "DoricExtensions.h"
#import "DoricUtil.h"
#import "DoricSuperNode.h"
#if __has_include(<YYWebImage/YYWebImage.h>)
@@ -44,8 +45,18 @@ - (void)displayLayer:(CALayer *)layer {
}
}
@end
#else
#elif __has_include(<SDWebImage/SDWebImage.h>)
#import <SDWebImage/SDWebImage.h>
@interface DoricImageView : SDAnimatedImageView
@end
@implementation DoricImageView
@end
#else
@interface DoricImageView : UIImageView
@end
@@ -118,6 +129,8 @@ - (UIImage *)currentPlaceHolderImage {
options:NSDataBase64DecodingIgnoreUnknownCharacters];
#if __has_include(<YYWebImage/YYWebImage.h>)
YYImage *image = [YYImage imageWithData:imageData scale:self.imageScale];
#elif __has_include(<SDWebImage/SDWebImage.h>)
SDAnimatedImage *image = [SDAnimatedImage imageWithData:imageData scale:self.imageScale];
#else
UIImage *image = [UIImage imageWithData:imageData scale:self.imageScale];
#endif
@@ -155,6 +168,8 @@ - (UIImage *)currentErrorImage {
options:NSDataBase64DecodingIgnoreUnknownCharacters];
#if __has_include(<YYWebImage/YYWebImage.h>)
YYImage *image = [YYImage imageWithData:imageData scale:self.imageScale];
#elif __has_include(<SDWebImage/SDWebImage.h>)
SDAnimatedImage *image = [SDAnimatedImage imageWithData:imageData scale:self.imageScale];
#else
UIImage *image = [UIImage imageWithData:imageData scale:self.imageScale];
#endif
@@ -216,6 +231,44 @@ - (void)blendView:(UIImageView *)view forPropName:(NSString *)name propValue:(id
}
}
}];
#elif __has_include(<SDWebImage/SDWebImage.h>)
[view sd_setImageWithURL:[NSURL URLWithString:prop] placeholderImage:[self currentPlaceHolderImage] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
__strong typeof(_self) self = _self;
if (self.placeHolderColor || self.errorColor) {
self.view.contentMode = self.contentMode;
}
view.doricLayout.undefined = NO;
if (error) {
[[self currentErrorImage] also:^(UIImage *it) {
self.view.image = it;
}];
if (self.loadCallbackId.length > 0) {
[self callJSResponse:self.loadCallbackId, nil];
}
} else {
if (image.scale != self.imageScale) {
if ([image isKindOfClass:SDAnimatedImage.class]) {
image = [SDAnimatedImage imageWithData:((SDAnimatedImage *) image).animatedImageData scale:self.imageScale];
} else {
image = [UIImage imageWithCGImage:image.CGImage scale:self.imageScale orientation:image.imageOrientation];
}
self.view.image = image;
}
if (self.loadCallbackId.length > 0) {
[self callJSResponse:self.loadCallbackId,
@{@"width": @(image.size.width), @"height": @(image.size.height)},
nil];
}
if (async) {
DoricSuperNode *node = self.superNode;
while (node.superNode != nil) {
node = node.superNode;
}
[node requestLayout];
}
}
}];
#else
DoricLog(@"Do not support load image url");
#endif
@@ -247,6 +300,8 @@ - (void)blendView:(UIImageView *)view forPropName:(NSString *)name propValue:(id
options:NSDataBase64DecodingIgnoreUnknownCharacters];
#if __has_include(<YYWebImage/YYWebImage.h>)
YYImage *image = [YYImage imageWithData:imageData scale:self.imageScale];
#elif __has_include(<SDWebImage/SDWebImage.h>)
SDAnimatedImage *image = [SDAnimatedImage imageWithData:imageData scale:self.imageScale];
#else
UIImage *image = [UIImage imageWithData:imageData scale:self.imageScale];
#endif
@@ -284,6 +339,8 @@ - (void)blendView:(UIImageView *)view forPropName:(NSString *)name propValue:(id
} else if ([@"imageRes" isEqualToString:name]) {
#if __has_include(<YYWebImage/YYWebImage.h>)
YYImage *image = [YYImage imageNamed:prop];
#elif __has_include(<SDWebImage/SDWebImage.h>)
SDAnimatedImage *image = [SDAnimatedImage imageNamed:prop];
#else
UIImage *image = [UIImage imageNamed:prop];
#endif
@@ -309,6 +366,8 @@ - (void)blendView:(UIImageView *)view forPropName:(NSString *)name propValue:(id
NSData *imgData = [[NSData alloc] initWithContentsOfFile:fullPath];
#if __has_include(<YYWebImage/YYWebImage.h>)
YYImage *image = [YYImage imageWithData:imgData scale:self.imageScale];
#elif __has_include(<SDWebImage/SDWebImage.h>)
SDAnimatedImage *image = [SDAnimatedImage imageWithData:imgData scale:self.imageScale];
#else
UIImage *image = [UIImage imageWithData:imgData scale:self.imageScale];
#endif