Compare commits
13 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
93d009f82d | |
|
|
dd4582ff10 | |
|
|
0414ec5291 | |
|
|
08db889da1 | |
|
|
21ed4e2aa7 | |
|
|
a9649e44da | |
|
|
5f4e85159e | |
|
|
a19fb57c98 | |
|
|
7c2b74070d | |
|
|
3aa3f4b9dc | |
|
|
3f63d7a60e | |
|
|
19431d0f81 | |
|
|
f1709a9214 |
|
|
@ -1,3 +1,9 @@
|
||||||
[submodule "Vendors/libwebp"]
|
[submodule "Vendors/libwebp"]
|
||||||
path = Vendors/libwebp
|
path = Vendors/libwebp
|
||||||
url = https://chromium.googlesource.com/webm/libwebp
|
url = https://chromium.googlesource.com/webm/libwebp
|
||||||
|
[submodule "Vendors/AFNetworking"]
|
||||||
|
path = Vendors/AFNetworking
|
||||||
|
url = https://github.com/AFNetworking/AFNetworking.git
|
||||||
|
[submodule "Vendors/FLAnimatedImage"]
|
||||||
|
path = Vendors/FLAnimatedImage
|
||||||
|
url = https://github.com/Flipboard/FLAnimatedImage.git
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
3E75A9861742DBE700DA412D /* CustomPathImages in Resources */ = {isa = PBXBuildFile; fileRef = 3E75A9851742DBE700DA412D /* CustomPathImages */; };
|
3E75A9861742DBE700DA412D /* CustomPathImages in Resources */ = {isa = PBXBuildFile; fileRef = 3E75A9851742DBE700DA412D /* CustomPathImages */; };
|
||||||
|
4389D77A1B5463BA009F647B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4389D7791B5463BA009F647B /* QuartzCore.framework */; };
|
||||||
|
4389D77C1B5463CA009F647B /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4389D77B1B5463CA009F647B /* MobileCoreServices.framework */; };
|
||||||
531041C1157EAC8F00BBABC3 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 537612E6155ABA44005750A4 /* ImageIO.framework */; };
|
531041C1157EAC8F00BBABC3 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 537612E6155ABA44005750A4 /* ImageIO.framework */; };
|
||||||
5376129A155AB74D005750A4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53761299155AB74D005750A4 /* UIKit.framework */; };
|
5376129A155AB74D005750A4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53761299155AB74D005750A4 /* UIKit.framework */; };
|
||||||
5376129C155AB74D005750A4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5376129B155AB74D005750A4 /* Foundation.framework */; };
|
5376129C155AB74D005750A4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5376129B155AB74D005750A4 /* Foundation.framework */; };
|
||||||
|
|
@ -22,10 +24,26 @@
|
||||||
53A2B50E155B155A00B12423 /* placeholder@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 53A2B50C155B155A00B12423 /* placeholder@2x.png */; };
|
53A2B50E155B155A00B12423 /* placeholder@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 53A2B50C155B155A00B12423 /* placeholder@2x.png */; };
|
||||||
53EEC18916484553007601E1 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 53EEC18816484553007601E1 /* Default-568h@2x.png */; };
|
53EEC18916484553007601E1 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 53EEC18816484553007601E1 /* Default-568h@2x.png */; };
|
||||||
DA248D44195470FD00390AB0 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 537612E3155ABA3C005750A4 /* MapKit.framework */; };
|
DA248D44195470FD00390AB0 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 537612E3155ABA3C005750A4 /* MapKit.framework */; };
|
||||||
DA248D79195484A500390AB0 /* libSDWebImage+WebP.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA248D761954841D00390AB0 /* libSDWebImage+WebP.a */; };
|
DA4D3C6F1B55303A00EC8389 /* libSDWebImage+All.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA4D3C6E1B55303500EC8389 /* libSDWebImage+All.a */; };
|
||||||
|
DAE75CB41B5532350044DE5E /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAE75CB31B5532350044DE5E /* SystemConfiguration.framework */; };
|
||||||
|
DAE75CB61B5532640044DE5E /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAE75CB51B5532640044DE5E /* Security.framework */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
|
4389D7741B546365009F647B /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = DA248D6C1954841D00390AB0 /* SDWebImage.xcodeproj */;
|
||||||
|
proxyType = 2;
|
||||||
|
remoteGlobalIDString = 4A2CADFF1AB4BB5300B6BC39;
|
||||||
|
remoteInfo = WebImage;
|
||||||
|
};
|
||||||
|
4389D7761B546365009F647B /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = DA248D6C1954841D00390AB0 /* SDWebImage.xcodeproj */;
|
||||||
|
proxyType = 2;
|
||||||
|
remoteGlobalIDString = 4389D7641B545EE0009F647B;
|
||||||
|
remoteInfo = "SDWebImage+GIF";
|
||||||
|
};
|
||||||
DA248D731954841D00390AB0 /* PBXContainerItemProxy */ = {
|
DA248D731954841D00390AB0 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = DA248D6C1954841D00390AB0 /* SDWebImage.xcodeproj */;
|
containerPortal = DA248D6C1954841D00390AB0 /* SDWebImage.xcodeproj */;
|
||||||
|
|
@ -47,10 +65,26 @@
|
||||||
remoteGlobalIDString = 531041E0157EAFA400BBABC3;
|
remoteGlobalIDString = 531041E0157EAFA400BBABC3;
|
||||||
remoteInfo = "SDWebImage+MKAnnotation";
|
remoteInfo = "SDWebImage+MKAnnotation";
|
||||||
};
|
};
|
||||||
|
DA4D3C6D1B55303500EC8389 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = DA248D6C1954841D00390AB0 /* SDWebImage.xcodeproj */;
|
||||||
|
proxyType = 2;
|
||||||
|
remoteGlobalIDString = DA4D3C1B1B552F4100EC8389;
|
||||||
|
remoteInfo = "SDWebImage+All";
|
||||||
|
};
|
||||||
|
DAE75C211B55307F0044DE5E /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = DA248D6C1954841D00390AB0 /* SDWebImage.xcodeproj */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = DA4D3BEF1B552F4100EC8389;
|
||||||
|
remoteInfo = "SDWebImage+All";
|
||||||
|
};
|
||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
3E75A9851742DBE700DA412D /* CustomPathImages */ = {isa = PBXFileReference; lastKnownFileType = folder; path = CustomPathImages; sourceTree = SOURCE_ROOT; };
|
3E75A9851742DBE700DA412D /* CustomPathImages */ = {isa = PBXFileReference; lastKnownFileType = folder; path = CustomPathImages; sourceTree = SOURCE_ROOT; };
|
||||||
|
4389D7791B5463BA009F647B /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||||
|
4389D77B1B5463CA009F647B /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
|
||||||
53761295155AB74D005750A4 /* SDWebImage Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SDWebImage Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
53761295155AB74D005750A4 /* SDWebImage Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "SDWebImage Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
53761299155AB74D005750A4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
53761299155AB74D005750A4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||||
5376129B155AB74D005750A4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
5376129B155AB74D005750A4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||||
|
|
@ -72,6 +106,8 @@
|
||||||
53A2B50C155B155A00B12423 /* placeholder@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "placeholder@2x.png"; sourceTree = "<group>"; };
|
53A2B50C155B155A00B12423 /* placeholder@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "placeholder@2x.png"; sourceTree = "<group>"; };
|
||||||
53EEC18816484553007601E1 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-568h@2x.png"; path = "../Default-568h@2x.png"; sourceTree = "<group>"; };
|
53EEC18816484553007601E1 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-568h@2x.png"; path = "../Default-568h@2x.png"; sourceTree = "<group>"; };
|
||||||
DA248D6C1954841D00390AB0 /* SDWebImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDWebImage.xcodeproj; path = ../SDWebImage.xcodeproj; sourceTree = "<group>"; };
|
DA248D6C1954841D00390AB0 /* SDWebImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDWebImage.xcodeproj; path = ../SDWebImage.xcodeproj; sourceTree = "<group>"; };
|
||||||
|
DAE75CB31B5532350044DE5E /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
|
||||||
|
DAE75CB51B5532640044DE5E /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
|
@ -79,7 +115,11 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
DA248D79195484A500390AB0 /* libSDWebImage+WebP.a in Frameworks */,
|
DA4D3C6F1B55303A00EC8389 /* libSDWebImage+All.a in Frameworks */,
|
||||||
|
DAE75CB61B5532640044DE5E /* Security.framework in Frameworks */,
|
||||||
|
DAE75CB41B5532350044DE5E /* SystemConfiguration.framework in Frameworks */,
|
||||||
|
4389D77C1B5463CA009F647B /* MobileCoreServices.framework in Frameworks */,
|
||||||
|
4389D77A1B5463BA009F647B /* QuartzCore.framework in Frameworks */,
|
||||||
DA248D44195470FD00390AB0 /* MapKit.framework in Frameworks */,
|
DA248D44195470FD00390AB0 /* MapKit.framework in Frameworks */,
|
||||||
531041C1157EAC8F00BBABC3 /* ImageIO.framework in Frameworks */,
|
531041C1157EAC8F00BBABC3 /* ImageIO.framework in Frameworks */,
|
||||||
5376129A155AB74D005750A4 /* UIKit.framework in Frameworks */,
|
5376129A155AB74D005750A4 /* UIKit.framework in Frameworks */,
|
||||||
|
|
@ -112,6 +152,10 @@
|
||||||
53761298155AB74D005750A4 /* Frameworks */ = {
|
53761298155AB74D005750A4 /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
DAE75CB51B5532640044DE5E /* Security.framework */,
|
||||||
|
DAE75CB31B5532350044DE5E /* SystemConfiguration.framework */,
|
||||||
|
4389D77B1B5463CA009F647B /* MobileCoreServices.framework */,
|
||||||
|
4389D7791B5463BA009F647B /* QuartzCore.framework */,
|
||||||
537612E6155ABA44005750A4 /* ImageIO.framework */,
|
537612E6155ABA44005750A4 /* ImageIO.framework */,
|
||||||
537612E3155ABA3C005750A4 /* MapKit.framework */,
|
537612E3155ABA3C005750A4 /* MapKit.framework */,
|
||||||
53761299155AB74D005750A4 /* UIKit.framework */,
|
53761299155AB74D005750A4 /* UIKit.framework */,
|
||||||
|
|
@ -156,7 +200,10 @@
|
||||||
children = (
|
children = (
|
||||||
DA248D741954841D00390AB0 /* libSDWebImage.a */,
|
DA248D741954841D00390AB0 /* libSDWebImage.a */,
|
||||||
DA248D761954841D00390AB0 /* libSDWebImage+WebP.a */,
|
DA248D761954841D00390AB0 /* libSDWebImage+WebP.a */,
|
||||||
|
4389D7771B546365009F647B /* libSDWebImage+GIF.a */,
|
||||||
DA248D781954841D00390AB0 /* libSDWebImage+MKAnnotation.a */,
|
DA248D781954841D00390AB0 /* libSDWebImage+MKAnnotation.a */,
|
||||||
|
4389D7751B546365009F647B /* WebImage.framework */,
|
||||||
|
DA4D3C6E1B55303500EC8389 /* libSDWebImage+All.a */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
|
@ -175,6 +222,7 @@
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
dependencies = (
|
dependencies = (
|
||||||
|
DAE75C221B55307F0044DE5E /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = "SDWebImage Demo";
|
name = "SDWebImage Demo";
|
||||||
productName = "SDWebImage Demo";
|
productName = "SDWebImage Demo";
|
||||||
|
|
@ -214,6 +262,20 @@
|
||||||
/* End PBXProject section */
|
/* End PBXProject section */
|
||||||
|
|
||||||
/* Begin PBXReferenceProxy section */
|
/* Begin PBXReferenceProxy section */
|
||||||
|
4389D7751B546365009F647B /* WebImage.framework */ = {
|
||||||
|
isa = PBXReferenceProxy;
|
||||||
|
fileType = wrapper.framework;
|
||||||
|
path = WebImage.framework;
|
||||||
|
remoteRef = 4389D7741B546365009F647B /* PBXContainerItemProxy */;
|
||||||
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
|
};
|
||||||
|
4389D7771B546365009F647B /* libSDWebImage+GIF.a */ = {
|
||||||
|
isa = PBXReferenceProxy;
|
||||||
|
fileType = archive.ar;
|
||||||
|
path = "libSDWebImage+GIF.a";
|
||||||
|
remoteRef = 4389D7761B546365009F647B /* PBXContainerItemProxy */;
|
||||||
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
|
};
|
||||||
DA248D741954841D00390AB0 /* libSDWebImage.a */ = {
|
DA248D741954841D00390AB0 /* libSDWebImage.a */ = {
|
||||||
isa = PBXReferenceProxy;
|
isa = PBXReferenceProxy;
|
||||||
fileType = archive.ar;
|
fileType = archive.ar;
|
||||||
|
|
@ -235,6 +297,13 @@
|
||||||
remoteRef = DA248D771954841D00390AB0 /* PBXContainerItemProxy */;
|
remoteRef = DA248D771954841D00390AB0 /* PBXContainerItemProxy */;
|
||||||
sourceTree = BUILT_PRODUCTS_DIR;
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
};
|
};
|
||||||
|
DA4D3C6E1B55303500EC8389 /* libSDWebImage+All.a */ = {
|
||||||
|
isa = PBXReferenceProxy;
|
||||||
|
fileType = archive.ar;
|
||||||
|
path = "libSDWebImage+All.a";
|
||||||
|
remoteRef = DA4D3C6D1B55303500EC8389 /* PBXContainerItemProxy */;
|
||||||
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
|
};
|
||||||
/* End PBXReferenceProxy section */
|
/* End PBXReferenceProxy section */
|
||||||
|
|
||||||
/* Begin PBXResourcesBuildPhase section */
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
|
@ -267,6 +336,14 @@
|
||||||
};
|
};
|
||||||
/* End PBXSourcesBuildPhase section */
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
|
/* Begin PBXTargetDependency section */
|
||||||
|
DAE75C221B55307F0044DE5E /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
name = "SDWebImage+All";
|
||||||
|
targetProxy = DAE75C211B55307F0044DE5E /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
/* Begin PBXVariantGroup section */
|
/* Begin PBXVariantGroup section */
|
||||||
537612B1155AB74D005750A4 /* MasterViewController.xib */ = {
|
537612B1155AB74D005750A4 /* MasterViewController.xib */ = {
|
||||||
isa = PBXVariantGroup;
|
isa = PBXVariantGroup;
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
_objects = [NSArray arrayWithObjects:
|
_objects = [NSArray arrayWithObjects:
|
||||||
@"http://www.httpwatch.com/httpgallery/authentication/authenticatedimage/default.aspx?0.35786508303135633", // requires HTTP auth, used to demo the NTLM auth
|
@"http://www.httpwatch.com/httpgallery/authentication/authenticatedimage/default.aspx?0.35786508303135633", // requires HTTP auth, used to demo the NTLM auth
|
||||||
|
@"https://raw.githubusercontent.com/liyong03/YLGIFImage/master/YLGIFImageDemo/YLGIFImageDemo/joy.gif",
|
||||||
@"http://assets.sbnation.com/assets/2512203/dogflops.gif",
|
@"http://assets.sbnation.com/assets/2512203/dogflops.gif",
|
||||||
@"http://www.ioncannon.net/wp-content/uploads/2011/06/test2.webp",
|
@"http://www.ioncannon.net/wp-content/uploads/2011/06/test2.webp",
|
||||||
@"http://www.ioncannon.net/wp-content/uploads/2011/06/test9.webp",
|
@"http://www.ioncannon.net/wp-content/uploads/2011/06/test9.webp",
|
||||||
|
|
|
||||||
20
README.md
20
README.md
|
|
@ -96,16 +96,16 @@ Here is a simple example of how to use SDWebImageManager:
|
||||||
|
|
||||||
```objective-c
|
```objective-c
|
||||||
SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
||||||
[manager downloadImageWithURL:imageURL
|
[manager loadImageWithURL:imageURL
|
||||||
options:0
|
options:0
|
||||||
progress:^(NSInteger receivedSize, NSInteger expectedSize) {
|
progress:^(NSInteger receivedSize, NSInteger expectedSize) {
|
||||||
// progression tracking code
|
// progression tracking code
|
||||||
}
|
}
|
||||||
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||||
if (image) {
|
if (image) {
|
||||||
// do something with image
|
// do something with image
|
||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
```
|
```
|
||||||
|
|
||||||
### Using Asynchronous Image Downloader Independently
|
### Using Asynchronous Image Downloader Independently
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,77 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "0640"
|
||||||
|
version = "1.3">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "DA4D3BEF1B552F4100EC8389"
|
||||||
|
BuildableName = "libSDWebImage+All.a"
|
||||||
|
BlueprintName = "SDWebImage+All"
|
||||||
|
ReferencedContainer = "container:SDWebImage.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "DA4D3BEF1B552F4100EC8389"
|
||||||
|
BuildableName = "libSDWebImage+All.a"
|
||||||
|
BlueprintName = "SDWebImage+All"
|
||||||
|
ReferencedContainer = "container:SDWebImage.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "DA4D3BEF1B552F4100EC8389"
|
||||||
|
BuildableName = "libSDWebImage+All.a"
|
||||||
|
BlueprintName = "SDWebImage+All"
|
||||||
|
ReferencedContainer = "container:SDWebImage.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
|
|
@ -0,0 +1,77 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Scheme
|
||||||
|
LastUpgradeVersion = "0640"
|
||||||
|
version = "1.3">
|
||||||
|
<BuildAction
|
||||||
|
parallelizeBuildables = "YES"
|
||||||
|
buildImplicitDependencies = "YES">
|
||||||
|
<BuildActionEntries>
|
||||||
|
<BuildActionEntry
|
||||||
|
buildForTesting = "YES"
|
||||||
|
buildForRunning = "YES"
|
||||||
|
buildForProfiling = "YES"
|
||||||
|
buildForArchiving = "YES"
|
||||||
|
buildForAnalyzing = "YES">
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "4389D6EE1B545EE0009F647B"
|
||||||
|
BuildableName = "libSDWebImage+GIF.a"
|
||||||
|
BlueprintName = "SDWebImage+GIF"
|
||||||
|
ReferencedContainer = "container:SDWebImage.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</BuildActionEntry>
|
||||||
|
</BuildActionEntries>
|
||||||
|
</BuildAction>
|
||||||
|
<TestAction
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
<Testables>
|
||||||
|
</Testables>
|
||||||
|
</TestAction>
|
||||||
|
<LaunchAction
|
||||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
|
launchStyle = "0"
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
buildConfiguration = "Debug"
|
||||||
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
|
debugDocumentVersioning = "YES"
|
||||||
|
allowLocationSimulation = "YES">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "4389D6EE1B545EE0009F647B"
|
||||||
|
BuildableName = "libSDWebImage+GIF.a"
|
||||||
|
BlueprintName = "SDWebImage+GIF"
|
||||||
|
ReferencedContainer = "container:SDWebImage.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
|
</LaunchAction>
|
||||||
|
<ProfileAction
|
||||||
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
|
savedToolIdentifier = ""
|
||||||
|
useCustomWorkingDirectory = "NO"
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
debugDocumentVersioning = "YES">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "4389D6EE1B545EE0009F647B"
|
||||||
|
BuildableName = "libSDWebImage+GIF.a"
|
||||||
|
BlueprintName = "SDWebImage+GIF"
|
||||||
|
ReferencedContainer = "container:SDWebImage.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
|
</ProfileAction>
|
||||||
|
<AnalyzeAction
|
||||||
|
buildConfiguration = "Debug">
|
||||||
|
</AnalyzeAction>
|
||||||
|
<ArchiveAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
|
revealArchiveInOrganizer = "YES">
|
||||||
|
</ArchiveAction>
|
||||||
|
</Scheme>
|
||||||
|
|
@ -105,20 +105,3 @@
|
||||||
- (void)sd_cancelCurrentImageLoad;
|
- (void)sd_cancelCurrentImageLoad;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@interface MKAnnotationView (WebCacheDeprecated)
|
|
||||||
|
|
||||||
- (NSURL *)imageURL __deprecated_msg("Use `sd_imageURL`");
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:placeholderImage:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:placeholderImage:options:`");
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:completed:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:placeholderImage:completed:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:placeholderImage:options:completed:`");
|
|
||||||
|
|
||||||
- (void)cancelCurrentImageLoad __deprecated_msg("Use `sd_cancelCurrentImageLoad`");
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ static char imageURLKey;
|
||||||
|
|
||||||
if (url) {
|
if (url) {
|
||||||
__weak __typeof(self)wself = self;
|
__weak __typeof(self)wself = self;
|
||||||
id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadImageWithURL:url options:options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager loadImageWithURL:url options:options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||||
if (!wself) return;
|
if (!wself) return;
|
||||||
dispatch_main_sync_safe(^{
|
dispatch_main_sync_safe(^{
|
||||||
__strong MKAnnotationView *sself = wself;
|
__strong MKAnnotationView *sself = wself;
|
||||||
|
|
@ -75,52 +75,3 @@ static char imageURLKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@implementation MKAnnotationView (WebCacheDeprecated)
|
|
||||||
|
|
||||||
- (NSURL *)imageURL {
|
|
||||||
return [self sd_imageURL];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:nil options:0 completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:placeholder options:0 completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:placeholder options:options completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:nil options:0 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:placeholder options:0 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:placeholder options:options completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)cancelCurrentImageLoad {
|
|
||||||
[self sd_cancelCurrentImageLoad];
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -17,10 +17,3 @@
|
||||||
+ (NSString *)sd_contentTypeForImageData:(NSData *)data;
|
+ (NSString *)sd_contentTypeForImageData:(NSData *)data;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@interface NSData (ImageContentTypeDeprecated)
|
|
||||||
|
|
||||||
+ (NSString *)contentTypeForImageData:(NSData *)data __deprecated_msg("Use `sd_contentTypeForImageData:`");
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -38,12 +38,3 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@implementation NSData (ImageContentTypeDeprecated)
|
|
||||||
|
|
||||||
+ (NSString *)contentTypeForImageData:(NSData *)data {
|
|
||||||
return [self sd_contentTypeForImageData:data];
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -139,14 +139,14 @@ typedef NSString *(^SDWebImageCacheKeyFilterBlock)(NSURL *url);
|
||||||
* @code
|
* @code
|
||||||
|
|
||||||
SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
||||||
[manager downloadImageWithURL:imageURL
|
[manager loadImageWithURL:imageURL
|
||||||
options:0
|
options:0
|
||||||
progress:nil
|
progress:nil
|
||||||
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||||
if (image) {
|
if (image) {
|
||||||
// do something with image
|
// do something with image
|
||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
|
|
||||||
* @endcode
|
* @endcode
|
||||||
*/
|
*/
|
||||||
|
|
@ -204,10 +204,10 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
||||||
*
|
*
|
||||||
* @return Returns an NSObject conforming to SDWebImageOperation. Should be an instance of SDWebImageDownloaderOperation
|
* @return Returns an NSObject conforming to SDWebImageOperation. Should be an instance of SDWebImageDownloaderOperation
|
||||||
*/
|
*/
|
||||||
- (id <SDWebImageOperation>)downloadImageWithURL:(NSURL *)url
|
- (id <SDWebImageOperation>)loadImageWithURL:(NSURL *)url
|
||||||
options:(SDWebImageOptions)options
|
options:(SDWebImageOptions)options
|
||||||
progress:(SDWebImageDownloaderProgressBlock)progressBlock
|
progress:(SDWebImageDownloaderProgressBlock)progressBlock
|
||||||
completed:(SDWebImageCompletionWithFinishedBlock)completedBlock;
|
completed:(SDWebImageCompletionWithFinishedBlock)completedBlock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves image to cache for given URL
|
* Saves image to cache for given URL
|
||||||
|
|
@ -276,24 +276,3 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
||||||
- (NSString *)cacheKeyForURL:(NSURL *)url;
|
- (NSString *)cacheKeyForURL:(NSURL *)url;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - Deprecated
|
|
||||||
|
|
||||||
typedef void(^SDWebImageCompletedBlock)(UIImage *image, NSError *error, SDImageCacheType cacheType) __deprecated_msg("Block type deprecated. Use `SDWebImageCompletionBlock`");
|
|
||||||
typedef void(^SDWebImageCompletedWithFinishedBlock)(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished) __deprecated_msg("Block type deprecated. Use `SDWebImageCompletionWithFinishedBlock`");
|
|
||||||
|
|
||||||
|
|
||||||
@interface SDWebImageManager (Deprecated)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Downloads the image at the given URL if not present in cache or return the cached version otherwise.
|
|
||||||
*
|
|
||||||
* @deprecated This method has been deprecated. Use `downloadImageWithURL:options:progress:completed:`
|
|
||||||
*/
|
|
||||||
- (id <SDWebImageOperation>)downloadWithURL:(NSURL *)url
|
|
||||||
options:(SDWebImageOptions)options
|
|
||||||
progress:(SDWebImageDownloaderProgressBlock)progressBlock
|
|
||||||
completed:(SDWebImageCompletedWithFinishedBlock)completedBlock __deprecated_msg("Method deprecated. Use `downloadImageWithURL:options:progress:completed:`");
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (id <SDWebImageOperation>)downloadImageWithURL:(NSURL *)url
|
- (id <SDWebImageOperation>)loadImageWithURL:(NSURL *)url
|
||||||
options:(SDWebImageOptions)options
|
options:(SDWebImageOptions)options
|
||||||
progress:(SDWebImageDownloaderProgressBlock)progressBlock
|
progress:(SDWebImageDownloaderProgressBlock)progressBlock
|
||||||
completed:(SDWebImageCompletionWithFinishedBlock)completedBlock {
|
completed:(SDWebImageCompletionWithFinishedBlock)completedBlock {
|
||||||
|
|
@ -334,21 +334,3 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@implementation SDWebImageManager (Deprecated)
|
|
||||||
|
|
||||||
// deprecated method, uses the non deprecated method
|
|
||||||
// adapter for the completion block
|
|
||||||
- (id <SDWebImageOperation>)downloadWithURL:(NSURL *)url options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletedWithFinishedBlock)completedBlock {
|
|
||||||
return [self downloadImageWithURL:url
|
|
||||||
options:options
|
|
||||||
progress:progressBlock
|
|
||||||
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType, finished);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@
|
||||||
- (void)startPrefetchingAtIndex:(NSUInteger)index {
|
- (void)startPrefetchingAtIndex:(NSUInteger)index {
|
||||||
if (index >= self.prefetchURLs.count) return;
|
if (index >= self.prefetchURLs.count) return;
|
||||||
self.requestedCount++;
|
self.requestedCount++;
|
||||||
[self.manager downloadImageWithURL:self.prefetchURLs[index] options:self.options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
[self.manager loadImageWithURL:self.prefetchURLs[index] options:self.options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||||
if (!finished) return;
|
if (!finished) return;
|
||||||
self.finishedCount++;
|
self.finishedCount++;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -200,30 +200,3 @@
|
||||||
- (void)sd_cancelBackgroundImageLoadForState:(UIControlState)state;
|
- (void)sd_cancelBackgroundImageLoadForState:(UIControlState)state;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@interface UIButton (WebCacheDeprecated)
|
|
||||||
|
|
||||||
- (NSURL *)currentImageURL __deprecated_msg("Use `sd_currentImageURL`");
|
|
||||||
- (NSURL *)imageURLForState:(UIControlState)state __deprecated_msg("Use `sd_imageURLForState:`");
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:forState:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:forState:placeholderImage:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:forState:placeholderImage:options:`");
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:forState:completed:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:forState:placeholderImage:completed:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:forState:placeholderImage:options:completed:`");
|
|
||||||
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state __deprecated_msg("Method deprecated. Use `sd_setBackgroundImageWithURL:forState:`");
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder __deprecated_msg("Method deprecated. Use `sd_setBackgroundImageWithURL:forState:placeholderImage:`");
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options __deprecated_msg("Method deprecated. Use `sd_setBackgroundImageWithURL:forState:placeholderImage:options:`");
|
|
||||||
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setBackgroundImageWithURL:forState:completed:`");
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setBackgroundImageWithURL:forState:placeholderImage:completed:`");
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setBackgroundImageWithURL:forState:placeholderImage:options:completed:`");
|
|
||||||
|
|
||||||
- (void)cancelCurrentImageLoad __deprecated_msg("Use `sd_cancelImageLoadForState:`");
|
|
||||||
- (void)cancelBackgroundImageLoadForState:(UIControlState)state __deprecated_msg("Use `sd_cancelBackgroundImageLoadForState:`");
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ static char imageURLStorageKey;
|
||||||
self.imageURLStorage[@(state)] = url;
|
self.imageURLStorage[@(state)] = url;
|
||||||
|
|
||||||
__weak __typeof(self)wself = self;
|
__weak __typeof(self)wself = self;
|
||||||
id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadImageWithURL:url options:options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager loadImageWithURL:url options:options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||||
if (!wself) return;
|
if (!wself) return;
|
||||||
dispatch_main_sync_safe(^{
|
dispatch_main_sync_safe(^{
|
||||||
__strong UIButton *sself = wself;
|
__strong UIButton *sself = wself;
|
||||||
|
|
@ -112,7 +112,7 @@ static char imageURLStorageKey;
|
||||||
|
|
||||||
if (url) {
|
if (url) {
|
||||||
__weak __typeof(self)wself = self;
|
__weak __typeof(self)wself = self;
|
||||||
id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadImageWithURL:url options:options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager loadImageWithURL:url options:options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||||
if (!wself) return;
|
if (!wself) return;
|
||||||
dispatch_main_sync_safe(^{
|
dispatch_main_sync_safe(^{
|
||||||
__strong UIButton *sself = wself;
|
__strong UIButton *sself = wself;
|
||||||
|
|
@ -164,97 +164,3 @@ static char imageURLStorageKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@implementation UIButton (WebCacheDeprecated)
|
|
||||||
|
|
||||||
- (NSURL *)currentImageURL {
|
|
||||||
return [self sd_currentImageURL];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (NSURL *)imageURLForState:(UIControlState)state {
|
|
||||||
return [self sd_imageURLForState:state];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state {
|
|
||||||
[self sd_setImageWithURL:url forState:state placeholderImage:nil options:0 completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder {
|
|
||||||
[self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options {
|
|
||||||
[self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:options completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setImageWithURL:url forState:state placeholderImage:nil options:0 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setImageWithURL:url forState:state placeholderImage:placeholder options:options completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state {
|
|
||||||
[self sd_setBackgroundImageWithURL:url forState:state placeholderImage:nil options:0 completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder {
|
|
||||||
[self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options {
|
|
||||||
[self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:options completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setBackgroundImageWithURL:url forState:state placeholderImage:nil options:0 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:0 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setBackgroundImageWithURL:(NSURL *)url forState:(UIControlState)state placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setBackgroundImageWithURL:url forState:state placeholderImage:placeholder options:options completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)cancelCurrentImageLoad {
|
|
||||||
// in a backwards compatible manner, cancel for current state
|
|
||||||
[self sd_cancelImageLoadForState:self.state];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)cancelBackgroundImageLoadForState:(UIControlState)state {
|
|
||||||
[self sd_cancelBackgroundImageLoadForState:state];
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,4 @@
|
||||||
//
|
#ifdef SD_GIF
|
||||||
// UIImage+GIF.h
|
|
||||||
// LBGIFImage
|
|
||||||
//
|
|
||||||
// Created by Laurin Brandner on 06.01.12.
|
|
||||||
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
|
@ -14,6 +8,6 @@
|
||||||
|
|
||||||
+ (UIImage *)sd_animatedGIFWithData:(NSData *)data;
|
+ (UIImage *)sd_animatedGIFWithData:(NSData *)data;
|
||||||
|
|
||||||
- (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size;
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1,158 +1,64 @@
|
||||||
//
|
#ifdef SD_GIF
|
||||||
// UIImage+GIF.m
|
|
||||||
// LBGIFImage
|
|
||||||
//
|
|
||||||
// Created by Laurin Brandner on 06.01.12.
|
|
||||||
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import "UIImage+GIF.h"
|
#import "UIImage+GIF.h"
|
||||||
#import <ImageIO/ImageIO.h>
|
#import <ImageIO/ImageIO.h>
|
||||||
|
#import "FLAnimatedImage.h"
|
||||||
|
|
||||||
@implementation UIImage (GIF)
|
@implementation UIImage (GIF)
|
||||||
|
|
||||||
+ (UIImage *)sd_animatedGIFWithData:(NSData *)data {
|
+ (UIImage *)sd_animatedGIFWithData:(NSData *)data {
|
||||||
if (!data) {
|
return [FLAnimatedImage imageWithData:data];
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);
|
|
||||||
|
|
||||||
size_t count = CGImageSourceGetCount(source);
|
|
||||||
|
|
||||||
UIImage *animatedImage;
|
|
||||||
|
|
||||||
if (count <= 1) {
|
|
||||||
animatedImage = [[UIImage alloc] initWithData:data];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
NSMutableArray *images = [NSMutableArray array];
|
|
||||||
|
|
||||||
NSTimeInterval duration = 0.0f;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < count; i++) {
|
|
||||||
CGImageRef image = CGImageSourceCreateImageAtIndex(source, i, NULL);
|
|
||||||
|
|
||||||
duration += [self sd_frameDurationAtIndex:i source:source];
|
|
||||||
|
|
||||||
[images addObject:[UIImage imageWithCGImage:image scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp]];
|
|
||||||
|
|
||||||
CGImageRelease(image);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!duration) {
|
|
||||||
duration = (1.0f / 10.0f) * count;
|
|
||||||
}
|
|
||||||
|
|
||||||
animatedImage = [UIImage animatedImageWithImages:images duration:duration];
|
|
||||||
}
|
|
||||||
|
|
||||||
CFRelease(source);
|
|
||||||
|
|
||||||
return animatedImage;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (float)sd_frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source {
|
|
||||||
float frameDuration = 0.1f;
|
|
||||||
CFDictionaryRef cfFrameProperties = CGImageSourceCopyPropertiesAtIndex(source, index, nil);
|
|
||||||
NSDictionary *frameProperties = (__bridge NSDictionary *)cfFrameProperties;
|
|
||||||
NSDictionary *gifProperties = frameProperties[(NSString *)kCGImagePropertyGIFDictionary];
|
|
||||||
|
|
||||||
NSNumber *delayTimeUnclampedProp = gifProperties[(NSString *)kCGImagePropertyGIFUnclampedDelayTime];
|
|
||||||
if (delayTimeUnclampedProp) {
|
|
||||||
frameDuration = [delayTimeUnclampedProp floatValue];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
|
|
||||||
NSNumber *delayTimeProp = gifProperties[(NSString *)kCGImagePropertyGIFDelayTime];
|
|
||||||
if (delayTimeProp) {
|
|
||||||
frameDuration = [delayTimeProp floatValue];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Many annoying ads specify a 0 duration to make an image flash as quickly as possible.
|
|
||||||
// We follow Firefox's behavior and use a duration of 100 ms for any frames that specify
|
|
||||||
// a duration of <= 10 ms. See <rdar://problem/7689300> and <http://webkit.org/b/36082>
|
|
||||||
// for more information.
|
|
||||||
|
|
||||||
if (frameDuration < 0.011f) {
|
|
||||||
frameDuration = 0.100f;
|
|
||||||
}
|
|
||||||
|
|
||||||
CFRelease(cfFrameProperties);
|
|
||||||
return frameDuration;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (UIImage *)sd_animatedGIFNamed:(NSString *)name {
|
+ (UIImage *)sd_animatedGIFNamed:(NSString *)name {
|
||||||
CGFloat scale = [UIScreen mainScreen].scale;
|
CGFloat scale = [UIScreen mainScreen].scale;
|
||||||
|
|
||||||
if (scale > 1.0f) {
|
//set up possible paths
|
||||||
NSString *retinaPath = [[NSBundle mainBundle] pathForResource:[name stringByAppendingString:@"@2x"] ofType:@"gif"];
|
NSString *threeTimesResName = [name stringByAppendingString:@"@3x"];
|
||||||
|
NSString *twoTimesResName = [name stringByAppendingString:@"@2x"];
|
||||||
|
NSString *normalResName = name;
|
||||||
|
|
||||||
NSData *data = [NSData dataWithContentsOfFile:retinaPath];
|
NSData *data;
|
||||||
|
NSString *path;
|
||||||
if (data) {
|
|
||||||
return [UIImage sd_animatedGIFWithData:data];
|
|
||||||
}
|
|
||||||
|
|
||||||
NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"gif"];
|
|
||||||
|
|
||||||
|
//get gif for @3x display
|
||||||
|
if (scale > 2.0f) {
|
||||||
|
path = [[NSBundle mainBundle] pathForResource:threeTimesResName ofType:@"gif"];
|
||||||
data = [NSData dataWithContentsOfFile:path];
|
data = [NSData dataWithContentsOfFile:path];
|
||||||
|
|
||||||
if (data) {
|
|
||||||
return [UIImage sd_animatedGIFWithData:data];
|
|
||||||
}
|
|
||||||
|
|
||||||
return [UIImage imageNamed:name];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"gif"];
|
|
||||||
|
|
||||||
NSData *data = [NSData dataWithContentsOfFile:path];
|
|
||||||
|
|
||||||
if (data) {
|
|
||||||
return [UIImage sd_animatedGIFWithData:data];
|
|
||||||
}
|
|
||||||
|
|
||||||
return [UIImage imageNamed:name];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size {
|
|
||||||
if (CGSizeEqualToSize(self.size, size) || CGSizeEqualToSize(size, CGSizeZero)) {
|
|
||||||
return self;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CGSize scaledSize = size;
|
//get gif for 2x display or if there is no @3x resource
|
||||||
CGPoint thumbnailPoint = CGPointZero;
|
if (scale > 1.0f && !data) {
|
||||||
|
path = [[NSBundle mainBundle] pathForResource:twoTimesResName ofType:@"gif"];
|
||||||
CGFloat widthFactor = size.width / self.size.width;
|
data = [NSData dataWithContentsOfFile:path];
|
||||||
CGFloat heightFactor = size.height / self.size.height;
|
|
||||||
CGFloat scaleFactor = (widthFactor > heightFactor) ? widthFactor : heightFactor;
|
|
||||||
scaledSize.width = self.size.width * scaleFactor;
|
|
||||||
scaledSize.height = self.size.height * scaleFactor;
|
|
||||||
|
|
||||||
if (widthFactor > heightFactor) {
|
|
||||||
thumbnailPoint.y = (size.height - scaledSize.height) * 0.5;
|
|
||||||
}
|
|
||||||
else if (widthFactor < heightFactor) {
|
|
||||||
thumbnailPoint.x = (size.width - scaledSize.width) * 0.5;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NSMutableArray *scaledImages = [NSMutableArray array];
|
//get gif for non-retina display or if there is no @2x or 3x resource
|
||||||
|
if (!data) {
|
||||||
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
|
path = [[NSBundle mainBundle] pathForResource:normalResName ofType:@"gif"];
|
||||||
|
data = [NSData dataWithContentsOfFile:path];
|
||||||
for (UIImage *image in self.images) {
|
|
||||||
[image drawInRect:CGRectMake(thumbnailPoint.x, thumbnailPoint.y, scaledSize.width, scaledSize.height)];
|
|
||||||
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
|
|
||||||
|
|
||||||
[scaledImages addObject:newImage];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
UIGraphicsEndImageContext();
|
//no data yet? maybe there is only a @2x image
|
||||||
|
if (!data) {
|
||||||
|
path = [[NSBundle mainBundle] pathForResource:twoTimesResName ofType:@"gif"];
|
||||||
|
data = [NSData dataWithContentsOfFile:path];
|
||||||
|
}
|
||||||
|
|
||||||
return [UIImage animatedImageWithImages:scaledImages duration:self.duration];
|
//still no data? could be only a @3x image is provided
|
||||||
|
if (!data) {
|
||||||
|
path = [[NSBundle mainBundle] pathForResource:threeTimesResName ofType:@"gif"];
|
||||||
|
data = [NSData dataWithContentsOfFile:path];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data) {
|
||||||
|
return [UIImage sd_animatedGIFWithData:data];
|
||||||
|
}
|
||||||
|
|
||||||
|
//still no resource found --> try to return non-gif image
|
||||||
|
return [UIImage imageNamed:name];
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,10 @@
|
||||||
#import "UIImage+WebP.h"
|
#import "UIImage+WebP.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SD_GIF
|
||||||
|
#import "UIImage+GIF.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
@implementation UIImage (MultiFormat)
|
@implementation UIImage (MultiFormat)
|
||||||
|
|
||||||
+ (UIImage *)sd_imageWithData:(NSData *)data {
|
+ (UIImage *)sd_imageWithData:(NSData *)data {
|
||||||
|
|
@ -22,18 +26,18 @@
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
UIImage *image;
|
UIImage *image = nil;
|
||||||
NSString *imageContentType = [NSData sd_contentTypeForImageData:data];
|
NSString *imageContentType = [NSData sd_contentTypeForImageData:data];
|
||||||
|
|
||||||
if ([imageContentType isEqualToString:@"image/gif"]) {
|
if ([imageContentType isEqualToString:@"image/gif"]) {
|
||||||
|
#ifdef SD_GIF
|
||||||
image = [UIImage sd_animatedGIFWithData:data];
|
image = [UIImage sd_animatedGIFWithData:data];
|
||||||
}
|
|
||||||
#ifdef SD_WEBP
|
|
||||||
else if ([imageContentType isEqualToString:@"image/webp"])
|
|
||||||
{
|
|
||||||
image = [UIImage sd_imageWithWebPData:data];
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
else {
|
} else if ([imageContentType isEqualToString:@"image/webp"]) {
|
||||||
|
#ifdef SD_WEBP
|
||||||
|
image = [UIImage sd_imageWithWebPData:data];
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
image = [[UIImage alloc] initWithData:data];
|
image = [[UIImage alloc] initWithData:data];
|
||||||
UIImageOrientation orientation = [self sd_imageOrientationFromImageData:data];
|
UIImageOrientation orientation = [self sd_imageOrientationFromImageData:data];
|
||||||
if (orientation != UIImageOrientationUp) {
|
if (orientation != UIImageOrientationUp) {
|
||||||
|
|
|
||||||
|
|
@ -85,16 +85,3 @@
|
||||||
- (void)sd_cancelCurrentHighlightedImageLoad;
|
- (void)sd_cancelCurrentHighlightedImageLoad;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@interface UIImageView (HighlightedWebCacheDeprecated)
|
|
||||||
|
|
||||||
- (void)setHighlightedImageWithURL:(NSURL *)url __deprecated_msg("Method deprecated. Use `sd_setHighlightedImageWithURL:`");
|
|
||||||
- (void)setHighlightedImageWithURL:(NSURL *)url options:(SDWebImageOptions)options __deprecated_msg("Method deprecated. Use `sd_setHighlightedImageWithURL:options:`");
|
|
||||||
- (void)setHighlightedImageWithURL:(NSURL *)url completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setHighlightedImageWithURL:completed:`");
|
|
||||||
- (void)setHighlightedImageWithURL:(NSURL *)url options:(SDWebImageOptions)options completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setHighlightedImageWithURL:options:completed:`");
|
|
||||||
- (void)setHighlightedImageWithURL:(NSURL *)url options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setHighlightedImageWithURL:options:progress:completed:`");
|
|
||||||
|
|
||||||
- (void)cancelCurrentHighlightedImageLoad __deprecated_msg("Use `sd_cancelCurrentHighlightedImageLoad`");
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
if (url) {
|
if (url) {
|
||||||
__weak __typeof(self)wself = self;
|
__weak __typeof(self)wself = self;
|
||||||
id<SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadImageWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
id<SDWebImageOperation> operation = [SDWebImageManager.sharedManager loadImageWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||||
if (!wself) return;
|
if (!wself) return;
|
||||||
dispatch_main_sync_safe (^
|
dispatch_main_sync_safe (^
|
||||||
{
|
{
|
||||||
|
|
@ -64,44 +64,3 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@implementation UIImageView (HighlightedWebCacheDeprecated)
|
|
||||||
|
|
||||||
- (void)setHighlightedImageWithURL:(NSURL *)url {
|
|
||||||
[self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setHighlightedImageWithURL:(NSURL *)url options:(SDWebImageOptions)options {
|
|
||||||
[self sd_setHighlightedImageWithURL:url options:options progress:nil completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setHighlightedImageWithURL:(NSURL *)url completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setHighlightedImageWithURL:url options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setHighlightedImageWithURL:(NSURL *)url options:(SDWebImageOptions)options completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setHighlightedImageWithURL:url options:options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setHighlightedImageWithURL:(NSURL *)url options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setHighlightedImageWithURL:url options:0 progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)cancelCurrentHighlightedImageLoad {
|
|
||||||
[self sd_cancelCurrentHighlightedImageLoad];
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -177,25 +177,3 @@
|
||||||
- (void)sd_cancelCurrentAnimationImagesLoad;
|
- (void)sd_cancelCurrentAnimationImagesLoad;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@interface UIImageView (WebCacheDeprecated)
|
|
||||||
|
|
||||||
- (NSURL *)imageURL __deprecated_msg("Use `sd_imageURL`");
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:placeholderImage:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:placeholderImage:options`");
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:completed:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:placeholderImage:completed:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:placeholderImage:options:completed:`");
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletedBlock)completedBlock __deprecated_msg("Method deprecated. Use `sd_setImageWithURL:placeholderImage:options:progress:completed:`");
|
|
||||||
|
|
||||||
- (void)setAnimationImagesWithURLs:(NSArray *)arrayOfURLs __deprecated_msg("Use `sd_setAnimationImagesWithURLs:`");
|
|
||||||
|
|
||||||
- (void)cancelCurrentArrayLoad __deprecated_msg("Use `sd_cancelCurrentAnimationImagesLoad`");
|
|
||||||
|
|
||||||
- (void)cancelCurrentImageLoad __deprecated_msg("Use `sd_cancelCurrentImageLoad`");
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ static char imageURLKey;
|
||||||
|
|
||||||
if (url) {
|
if (url) {
|
||||||
__weak __typeof(self)wself = self;
|
__weak __typeof(self)wself = self;
|
||||||
id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadImageWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager loadImageWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||||
if (!wself) return;
|
if (!wself) return;
|
||||||
dispatch_main_sync_safe(^{
|
dispatch_main_sync_safe(^{
|
||||||
if (!wself) return;
|
if (!wself) return;
|
||||||
|
|
@ -102,7 +102,7 @@ static char imageURLKey;
|
||||||
NSMutableArray *operationsArray = [[NSMutableArray alloc] init];
|
NSMutableArray *operationsArray = [[NSMutableArray alloc] init];
|
||||||
|
|
||||||
for (NSURL *logoImageURL in arrayOfURLs) {
|
for (NSURL *logoImageURL in arrayOfURLs) {
|
||||||
id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadImageWithURL:logoImageURL options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager loadImageWithURL:logoImageURL options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||||
if (!wself) return;
|
if (!wself) return;
|
||||||
dispatch_main_sync_safe(^{
|
dispatch_main_sync_safe(^{
|
||||||
__strong UIImageView *sself = wself;
|
__strong UIImageView *sself = wself;
|
||||||
|
|
@ -135,68 +135,3 @@ static char imageURLKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@implementation UIImageView (WebCacheDeprecated)
|
|
||||||
|
|
||||||
- (NSURL *)imageURL {
|
|
||||||
return [self sd_imageURL];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:nil options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:placeholder options:0 progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletedBlock)completedBlock {
|
|
||||||
[self sd_setImageWithURL:url placeholderImage:placeholder options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
|
|
||||||
if (completedBlock) {
|
|
||||||
completedBlock(image, error, cacheType);
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)cancelCurrentArrayLoad {
|
|
||||||
[self sd_cancelCurrentAnimationImagesLoad];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)cancelCurrentImageLoad {
|
|
||||||
[self sd_cancelCurrentImageLoad];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setAnimationImagesWithURLs:(NSArray *)arrayOfURLs {
|
|
||||||
[self sd_setAnimationImagesWithURLs:arrayOfURLs];
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ static int64_t kAsyncTestTimeout = 5;
|
||||||
|
|
||||||
NSURL *originalImageURL = [NSURL URLWithString:@"https://www.google.gr/images/srpr/logo11w.png"];
|
NSURL *originalImageURL = [NSURL URLWithString:@"https://www.google.gr/images/srpr/logo11w.png"];
|
||||||
|
|
||||||
[[SDWebImageManager sharedManager] downloadImageWithURL:originalImageURL options:SDWebImageRefreshCached progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
[[SDWebImageManager sharedManager] loadImageWithURL:originalImageURL options:SDWebImageRefreshCached progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||||
expect(image).toNot.beNil();
|
expect(image).toNot.beNil();
|
||||||
expect(error).to.beNil();
|
expect(error).to.beNil();
|
||||||
expect(originalImageURL).to.equal(imageURL);
|
expect(originalImageURL).to.equal(imageURL);
|
||||||
|
|
@ -57,7 +57,7 @@ static int64_t kAsyncTestTimeout = 5;
|
||||||
|
|
||||||
NSURL *originalImageURL = [NSURL URLWithString:@"http://static2.dmcdn.net/static/video/656/177/44771656:jpeg_preview_small.png"];
|
NSURL *originalImageURL = [NSURL URLWithString:@"http://static2.dmcdn.net/static/video/656/177/44771656:jpeg_preview_small.png"];
|
||||||
|
|
||||||
[[SDWebImageManager sharedManager] downloadImageWithURL:originalImageURL options:SDWebImageRefreshCached progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
[[SDWebImageManager sharedManager] loadImageWithURL:originalImageURL options:SDWebImageRefreshCached progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||||
expect(image).to.beNil();
|
expect(image).to.beNil();
|
||||||
expect(error).toNot.beNil();
|
expect(error).toNot.beNil();
|
||||||
expect(originalImageURL).to.equal(imageURL);
|
expect(originalImageURL).to.equal(imageURL);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit f38608bf2f7f5e13e673f3d77cf9b4fa5e4aad97
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit b46cc40d00ee630ccdbb85fbdc0f47e9e2785a10
|
||||||
Loading…
Reference in New Issue