iOS:update SDWebImage API call

This commit is contained in:
pengfeizhou
2021-01-29 10:27:28 +08:00
committed by osborn
parent 4ad278e9c9
commit 4c78a91f7a
3 changed files with 211 additions and 43 deletions

View File

@@ -9,6 +9,8 @@
#import "AppDelegate.h"
#import "NavigationController.h"
#import "ViewController.h"
#import <SDWebImage/SDWebImage.h>
#import <SDWebImageWebPCoder/SDWebImageWebPCoder.h>
@interface AppDelegate ()
@property(nonatomic, strong) UIViewController *rootVC;
@@ -28,6 +30,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
self.window.rootViewController = self.navigationController;
[self.window addSubview:self.navigationController.view];
[self.window makeKeyAndVisible];
[SDImageCodersManager.sharedManager addCoder:SDImageWebPCoder.sharedCoder];
return YES;
}

View File

@@ -130,7 +130,10 @@ - (UIImage *)currentPlaceHolderImage {
#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];
UIImage *image = [SDAnimatedImage imageWithData:imageData scale:self.imageScale];
if (!image) {
image = [UIImage imageWithData:imageData scale:self.imageScale];
}
#else
UIImage *image = [UIImage imageWithData:imageData scale:self.imageScale];
#endif
@@ -169,7 +172,10 @@ - (UIImage *)currentErrorImage {
#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];
UIImage *image = [SDAnimatedImage imageWithData:imageData scale:self.imageScale];
if (!image) {
image = [UIImage imageWithData:imageData scale:self.imageScale];
}
#else
UIImage *image = [UIImage imageWithData:imageData scale:self.imageScale];
#endif
@@ -232,43 +238,39 @@ - (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];
}
}
}];
[view sd_setImageWithURL:[NSURL URLWithString:prop]
placeholderImage:[self currentPlaceHolderImage]
options:0
context:@{SDWebImageContextImageScaleFactor: @(self.imageScale)}
progress:nil
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 (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
@@ -301,7 +303,10 @@ - (void)blendView:(UIImageView *)view forPropName:(NSString *)name propValue:(id
#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];
UIImage *image = [SDAnimatedImage imageWithData:imageData scale:self.imageScale];
if (!image) {
image = [UIImage imageWithData:imageData scale:self.imageScale];
}
#else
UIImage *image = [UIImage imageWithData:imageData scale:self.imageScale];
#endif
@@ -340,7 +345,10 @@ - (void)blendView:(UIImageView *)view forPropName:(NSString *)name propValue:(id
#if __has_include(<YYWebImage/YYWebImage.h>)
YYImage *image = [YYImage imageNamed:prop];
#elif __has_include(<SDWebImage/SDWebImage.h>)
SDAnimatedImage *image = [SDAnimatedImage imageNamed:prop];
UIImage *image = [SDAnimatedImage imageNamed:prop];
if (!image) {
image = [UIImage imageNamed:prop];
}
#else
UIImage *image = [UIImage imageNamed:prop];
#endif
@@ -367,7 +375,10 @@ - (void)blendView:(UIImageView *)view forPropName:(NSString *)name propValue:(id
#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];
UIImage *image = [SDAnimatedImage imageWithData:imgData scale:self.imageScale];
if (!image) {
image = [UIImage imageWithData:imgData scale:self.imageScale];
}
#else
UIImage *image = [UIImage imageWithData:imgData scale:self.imageScale];
#endif