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"]
|
||||
path = Vendors/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 */
|
||||
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 */; };
|
||||
5376129A155AB74D005750A4 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53761299155AB74D005750A4 /* UIKit.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 */; };
|
||||
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 */; };
|
||||
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 */
|
||||
|
||||
/* 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 */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = DA248D6C1954841D00390AB0 /* SDWebImage.xcodeproj */;
|
||||
|
|
@ -47,10 +65,26 @@
|
|||
remoteGlobalIDString = 531041E0157EAFA400BBABC3;
|
||||
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 */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
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; };
|
||||
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; };
|
||||
|
|
@ -72,6 +106,8 @@
|
|||
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>"; };
|
||||
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 */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
|
@ -79,7 +115,11 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
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 */,
|
||||
531041C1157EAC8F00BBABC3 /* ImageIO.framework in Frameworks */,
|
||||
5376129A155AB74D005750A4 /* UIKit.framework in Frameworks */,
|
||||
|
|
@ -112,6 +152,10 @@
|
|||
53761298155AB74D005750A4 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DAE75CB51B5532640044DE5E /* Security.framework */,
|
||||
DAE75CB31B5532350044DE5E /* SystemConfiguration.framework */,
|
||||
4389D77B1B5463CA009F647B /* MobileCoreServices.framework */,
|
||||
4389D7791B5463BA009F647B /* QuartzCore.framework */,
|
||||
537612E6155ABA44005750A4 /* ImageIO.framework */,
|
||||
537612E3155ABA3C005750A4 /* MapKit.framework */,
|
||||
53761299155AB74D005750A4 /* UIKit.framework */,
|
||||
|
|
@ -156,7 +200,10 @@
|
|||
children = (
|
||||
DA248D741954841D00390AB0 /* libSDWebImage.a */,
|
||||
DA248D761954841D00390AB0 /* libSDWebImage+WebP.a */,
|
||||
4389D7771B546365009F647B /* libSDWebImage+GIF.a */,
|
||||
DA248D781954841D00390AB0 /* libSDWebImage+MKAnnotation.a */,
|
||||
4389D7751B546365009F647B /* WebImage.framework */,
|
||||
DA4D3C6E1B55303500EC8389 /* libSDWebImage+All.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -175,6 +222,7 @@
|
|||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
DAE75C221B55307F0044DE5E /* PBXTargetDependency */,
|
||||
);
|
||||
name = "SDWebImage Demo";
|
||||
productName = "SDWebImage Demo";
|
||||
|
|
@ -214,6 +262,20 @@
|
|||
/* End PBXProject 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 */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
|
|
@ -235,6 +297,13 @@
|
|||
remoteRef = DA248D771954841D00390AB0 /* PBXContainerItemProxy */;
|
||||
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 */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
|
|
@ -267,6 +336,14 @@
|
|||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
DAE75C221B55307F0044DE5E /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = "SDWebImage+All";
|
||||
targetProxy = DAE75C211B55307F0044DE5E /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
537612B1155AB74D005750A4 /* MasterViewController.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
|
||||
_objects = [NSArray arrayWithObjects:
|
||||
@"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://www.ioncannon.net/wp-content/uploads/2011/06/test2.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
|
||||
SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
||||
[manager downloadImageWithURL:imageURL
|
||||
options:0
|
||||
progress:^(NSInteger receivedSize, NSInteger expectedSize) {
|
||||
// progression tracking code
|
||||
}
|
||||
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||
if (image) {
|
||||
// do something with image
|
||||
}
|
||||
}];
|
||||
[manager loadImageWithURL:imageURL
|
||||
options:0
|
||||
progress:^(NSInteger receivedSize, NSInteger expectedSize) {
|
||||
// progression tracking code
|
||||
}
|
||||
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||
if (image) {
|
||||
// do something with image
|
||||
}
|
||||
}];
|
||||
```
|
||||
|
||||
### 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;
|
||||
|
||||
@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) {
|
||||
__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;
|
||||
dispatch_main_sync_safe(^{
|
||||
__strong MKAnnotationView *sself = wself;
|
||||
|
|
@ -75,52 +75,3 @@ static char imageURLKey;
|
|||
}
|
||||
|
||||
@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;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface NSData (ImageContentTypeDeprecated)
|
||||
|
||||
+ (NSString *)contentTypeForImageData:(NSData *)data __deprecated_msg("Use `sd_contentTypeForImageData:`");
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -38,12 +38,3 @@
|
|||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation NSData (ImageContentTypeDeprecated)
|
||||
|
||||
+ (NSString *)contentTypeForImageData:(NSData *)data {
|
||||
return [self sd_contentTypeForImageData:data];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
|||
|
|
@ -139,14 +139,14 @@ typedef NSString *(^SDWebImageCacheKeyFilterBlock)(NSURL *url);
|
|||
* @code
|
||||
|
||||
SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
||||
[manager downloadImageWithURL:imageURL
|
||||
options:0
|
||||
progress:nil
|
||||
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||
if (image) {
|
||||
// do something with image
|
||||
}
|
||||
}];
|
||||
[manager loadImageWithURL:imageURL
|
||||
options:0
|
||||
progress:nil
|
||||
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
|
||||
if (image) {
|
||||
// do something with image
|
||||
}
|
||||
}];
|
||||
|
||||
* @endcode
|
||||
*/
|
||||
|
|
@ -204,10 +204,10 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
|||
*
|
||||
* @return Returns an NSObject conforming to SDWebImageOperation. Should be an instance of SDWebImageDownloaderOperation
|
||||
*/
|
||||
- (id <SDWebImageOperation>)downloadImageWithURL:(NSURL *)url
|
||||
options:(SDWebImageOptions)options
|
||||
progress:(SDWebImageDownloaderProgressBlock)progressBlock
|
||||
completed:(SDWebImageCompletionWithFinishedBlock)completedBlock;
|
||||
- (id <SDWebImageOperation>)loadImageWithURL:(NSURL *)url
|
||||
options:(SDWebImageOptions)options
|
||||
progress:(SDWebImageDownloaderProgressBlock)progressBlock
|
||||
completed:(SDWebImageCompletionWithFinishedBlock)completedBlock;
|
||||
|
||||
/**
|
||||
* Saves image to cache for given URL
|
||||
|
|
@ -276,24 +276,3 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
|||
- (NSString *)cacheKeyForURL:(NSURL *)url;
|
||||
|
||||
@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
|
||||
progress:(SDWebImageDownloaderProgressBlock)progressBlock
|
||||
completed:(SDWebImageCompletionWithFinishedBlock)completedBlock {
|
||||
|
|
@ -334,21 +334,3 @@
|
|||
}
|
||||
|
||||
@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 {
|
||||
if (index >= self.prefetchURLs.count) return;
|
||||
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;
|
||||
self.finishedCount++;
|
||||
|
||||
|
|
|
|||
|
|
@ -200,30 +200,3 @@
|
|||
- (void)sd_cancelBackgroundImageLoadForState:(UIControlState)state;
|
||||
|
||||
@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;
|
||||
|
||||
__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;
|
||||
dispatch_main_sync_safe(^{
|
||||
__strong UIButton *sself = wself;
|
||||
|
|
@ -112,7 +112,7 @@ static char imageURLStorageKey;
|
|||
|
||||
if (url) {
|
||||
__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;
|
||||
dispatch_main_sync_safe(^{
|
||||
__strong UIButton *sself = wself;
|
||||
|
|
@ -164,97 +164,3 @@ static char imageURLStorageKey;
|
|||
}
|
||||
|
||||
@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 @@
|
|||
//
|
||||
// UIImage+GIF.h
|
||||
// LBGIFImage
|
||||
//
|
||||
// Created by Laurin Brandner on 06.01.12.
|
||||
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
#ifdef SD_GIF
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
|
|
@ -14,6 +8,6 @@
|
|||
|
||||
+ (UIImage *)sd_animatedGIFWithData:(NSData *)data;
|
||||
|
||||
- (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size;
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,158 +1,64 @@
|
|||
//
|
||||
// UIImage+GIF.m
|
||||
// LBGIFImage
|
||||
//
|
||||
// Created by Laurin Brandner on 06.01.12.
|
||||
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
|
||||
//
|
||||
#ifdef SD_GIF
|
||||
|
||||
#import "UIImage+GIF.h"
|
||||
#import <ImageIO/ImageIO.h>
|
||||
#import "FLAnimatedImage.h"
|
||||
|
||||
@implementation UIImage (GIF)
|
||||
|
||||
+ (UIImage *)sd_animatedGIFWithData:(NSData *)data {
|
||||
if (!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;
|
||||
return [FLAnimatedImage imageWithData:data];
|
||||
}
|
||||
|
||||
+ (UIImage *)sd_animatedGIFNamed:(NSString *)name {
|
||||
CGFloat scale = [UIScreen mainScreen].scale;
|
||||
|
||||
if (scale > 1.0f) {
|
||||
NSString *retinaPath = [[NSBundle mainBundle] pathForResource:[name stringByAppendingString:@"@2x"] ofType:@"gif"];
|
||||
|
||||
NSData *data = [NSData dataWithContentsOfFile:retinaPath];
|
||||
|
||||
if (data) {
|
||||
return [UIImage sd_animatedGIFWithData:data];
|
||||
}
|
||||
|
||||
NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"gif"];
|
||||
|
||||
|
||||
//set up possible paths
|
||||
NSString *threeTimesResName = [name stringByAppendingString:@"@3x"];
|
||||
NSString *twoTimesResName = [name stringByAppendingString:@"@2x"];
|
||||
NSString *normalResName = name;
|
||||
|
||||
NSData *data;
|
||||
NSString *path;
|
||||
|
||||
//get gif for @3x display
|
||||
if (scale > 2.0f) {
|
||||
path = [[NSBundle mainBundle] pathForResource:threeTimesResName ofType:@"gif"];
|
||||
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];
|
||||
|
||||
//get gif for 2x display or if there is no @3x resource
|
||||
if (scale > 1.0f && !data) {
|
||||
path = [[NSBundle mainBundle] pathForResource:twoTimesResName ofType:@"gif"];
|
||||
data = [NSData dataWithContentsOfFile:path];
|
||||
}
|
||||
}
|
||||
|
||||
- (UIImage *)sd_animatedImageByScalingAndCroppingToSize:(CGSize)size {
|
||||
if (CGSizeEqualToSize(self.size, size) || CGSizeEqualToSize(size, CGSizeZero)) {
|
||||
return self;
|
||||
|
||||
//get gif for non-retina display or if there is no @2x or 3x resource
|
||||
if (!data) {
|
||||
path = [[NSBundle mainBundle] pathForResource:normalResName ofType:@"gif"];
|
||||
data = [NSData dataWithContentsOfFile:path];
|
||||
}
|
||||
|
||||
CGSize scaledSize = size;
|
||||
CGPoint thumbnailPoint = CGPointZero;
|
||||
|
||||
CGFloat widthFactor = size.width / self.size.width;
|
||||
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;
|
||||
|
||||
//no data yet? maybe there is only a @2x image
|
||||
if (!data) {
|
||||
path = [[NSBundle mainBundle] pathForResource:twoTimesResName ofType:@"gif"];
|
||||
data = [NSData dataWithContentsOfFile:path];
|
||||
}
|
||||
else if (widthFactor < heightFactor) {
|
||||
thumbnailPoint.x = (size.width - scaledSize.width) * 0.5;
|
||||
|
||||
//still no data? could be only a @3x image is provided
|
||||
if (!data) {
|
||||
path = [[NSBundle mainBundle] pathForResource:threeTimesResName ofType:@"gif"];
|
||||
data = [NSData dataWithContentsOfFile:path];
|
||||
}
|
||||
|
||||
NSMutableArray *scaledImages = [NSMutableArray array];
|
||||
|
||||
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
|
||||
|
||||
for (UIImage *image in self.images) {
|
||||
[image drawInRect:CGRectMake(thumbnailPoint.x, thumbnailPoint.y, scaledSize.width, scaledSize.height)];
|
||||
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
|
||||
|
||||
[scaledImages addObject:newImage];
|
||||
|
||||
if (data) {
|
||||
return [UIImage sd_animatedGIFWithData:data];
|
||||
}
|
||||
|
||||
UIGraphicsEndImageContext();
|
||||
|
||||
return [UIImage animatedImageWithImages:scaledImages duration:self.duration];
|
||||
|
||||
//still no resource found --> try to return non-gif image
|
||||
return [UIImage imageNamed:name];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -15,6 +15,10 @@
|
|||
#import "UIImage+WebP.h"
|
||||
#endif
|
||||
|
||||
#ifdef SD_GIF
|
||||
#import "UIImage+GIF.h"
|
||||
#endif
|
||||
|
||||
@implementation UIImage (MultiFormat)
|
||||
|
||||
+ (UIImage *)sd_imageWithData:(NSData *)data {
|
||||
|
|
@ -22,18 +26,18 @@
|
|||
return nil;
|
||||
}
|
||||
|
||||
UIImage *image;
|
||||
UIImage *image = nil;
|
||||
NSString *imageContentType = [NSData sd_contentTypeForImageData:data];
|
||||
|
||||
if ([imageContentType isEqualToString:@"image/gif"]) {
|
||||
#ifdef SD_GIF
|
||||
image = [UIImage sd_animatedGIFWithData:data];
|
||||
}
|
||||
#ifdef SD_WEBP
|
||||
else if ([imageContentType isEqualToString:@"image/webp"])
|
||||
{
|
||||
image = [UIImage sd_imageWithWebPData:data];
|
||||
}
|
||||
#endif
|
||||
else {
|
||||
} else if ([imageContentType isEqualToString:@"image/webp"]) {
|
||||
#ifdef SD_WEBP
|
||||
image = [UIImage sd_imageWithWebPData:data];
|
||||
#endif
|
||||
} else {
|
||||
image = [[UIImage alloc] initWithData:data];
|
||||
UIImageOrientation orientation = [self sd_imageOrientationFromImageData:data];
|
||||
if (orientation != UIImageOrientationUp) {
|
||||
|
|
|
|||
|
|
@ -85,16 +85,3 @@
|
|||
- (void)sd_cancelCurrentHighlightedImageLoad;
|
||||
|
||||
@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) {
|
||||
__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;
|
||||
dispatch_main_sync_safe (^
|
||||
{
|
||||
|
|
@ -64,44 +64,3 @@
|
|||
}
|
||||
|
||||
@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;
|
||||
|
||||
@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) {
|
||||
__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;
|
||||
dispatch_main_sync_safe(^{
|
||||
if (!wself) return;
|
||||
|
|
@ -102,7 +102,7 @@ static char imageURLKey;
|
|||
NSMutableArray *operationsArray = [[NSMutableArray alloc] init];
|
||||
|
||||
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;
|
||||
dispatch_main_sync_safe(^{
|
||||
__strong UIImageView *sself = wself;
|
||||
|
|
@ -135,68 +135,3 @@ static char imageURLKey;
|
|||
}
|
||||
|
||||
@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"];
|
||||
|
||||
[[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(error).to.beNil();
|
||||
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"];
|
||||
|
||||
[[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(error).toNot.beNil();
|
||||
expect(originalImageURL).to.equal(imageURL);
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit f38608bf2f7f5e13e673f3d77cf9b4fa5e4aad97
|
||||
|
|
@ -0,0 +1 @@
|
|||
Subproject commit b46cc40d00ee630ccdbb85fbdc0f47e9e2785a10
|
||||
Loading…
Reference in New Issue