2016-08-26 17:45:33 +08:00
< p align = "center" >
< img src = "SDWebImage_logo.png" title = "SDWebImage logo" float = left >
< / p >
2014-07-04 15:56:09 +08:00
[![Build Status ](http://img.shields.io/travis/rs/SDWebImage/master.svg?style=flat )](https://travis-ci.org/rs/SDWebImage)
[![Pod Version ](http://img.shields.io/cocoapods/v/SDWebImage.svg?style=flat )](http://cocoadocs.org/docsets/SDWebImage/)
[![Pod Platform ](http://img.shields.io/cocoapods/p/SDWebImage.svg?style=flat )](http://cocoadocs.org/docsets/SDWebImage/)
[![Pod License ](http://img.shields.io/cocoapods/l/SDWebImage.svg?style=flat )](https://www.apache.org/licenses/LICENSE-2.0.html)
2016-10-01 20:25:08 +08:00
[![Dependency Status ](https://www.versioneye.com/objective-c/sdwebimage/badge.svg?style=flat )](https://www.versioneye.com/objective-c/sdwebimage)
2014-07-26 16:45:46 +08:00
[![Reference Status ](https://www.versioneye.com/objective-c/sdwebimage/reference_badge.svg?style=flat )](https://www.versioneye.com/objective-c/sdwebimage/references)
2015-03-15 03:06:39 +08:00
[![Carthage compatible ](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat )](https://github.com/rs/SDWebImage)
2016-10-01 20:25:08 +08:00
[![codecov ](https://codecov.io/gh/rs/SDWebImage/branch/master/graph/badge.svg )](https://codecov.io/gh/rs/SDWebImage)
2009-09-20 02:45:42 +08:00
2016-10-01 20:25:08 +08:00
This library provides an async image downloader with cache support. For convenience, we added categories for UI elements like `UIImageView` , `UIButton` , `MKAnnotationView` .
2009-09-20 02:45:42 +08:00
2016-05-10 13:39:46 +08:00
## Features
2009-09-21 10:29:00 +08:00
2016-05-10 13:39:46 +08:00
- [x] Categories for `UIImageView` , `UIButton` , `MKAnnotationView` adding web image and cache management
- [x] An asynchronous image downloader
- [x] An asynchronous memory + disk image caching with automatic cache expiration handling
- [x] A background image decompression
- [x] A guarantee that the same URL won't be downloaded several times
- [x] A guarantee that bogus URLs won't be retried again and again
- [x] A guarantee that main thread will never be blocked
- [x] Performances!
- [x] Use GCD and ARC
2012-11-04 16:50:23 +08:00
2016-05-10 13:39:46 +08:00
## Supported Image Formats
2009-09-20 03:14:40 +08:00
2016-05-10 13:39:46 +08:00
- Image formats supported by UIImage (JPEG, PNG, ...), including GIF
2016-10-01 20:25:08 +08:00
- WebP format, including animated WebP (use the `WebP` subspec)
2012-11-04 23:17:01 +08:00
2016-05-10 13:39:46 +08:00
## Requirements
2012-11-04 22:17:32 +08:00
2016-08-27 01:07:49 +08:00
- iOS 7.0 or later
- tvOS 9.0 or later
- watchOS 2.0 or later
2018-02-01 13:06:36 +08:00
- macOS 10.9 or later
2016-08-27 01:07:49 +08:00
- Xcode 7.3 or later
2012-11-04 22:17:32 +08:00
2016-05-10 13:39:46 +08:00
#### Backwards compatibility
2009-09-20 03:14:40 +08:00
2016-10-05 16:50:49 +08:00
- For iOS 5 and 6, use [any 3.x version up to 3.7.6 ](https://github.com/rs/SDWebImage/tree/3.7.6 )
2016-05-10 13:39:46 +08:00
- For iOS < 5.0 , please use the last [2.0 version ](https://github.com/rs/SDWebImage/tree/2.0-compat ).
2012-05-10 20:16:10 +08:00
2016-05-10 13:39:46 +08:00
## Getting Started
2009-09-21 10:29:00 +08:00
2016-05-10 13:39:46 +08:00
- Read this Readme doc
- Read the [How to use section ](https://github.com/rs/SDWebImage#how-to-use )
2018-01-31 11:40:51 +08:00
- Read the [Documentation @ CocoaDocs ](http://cocoadocs.org/docsets/SDWebImage/ )
2016-05-10 13:39:46 +08:00
- Try the example by downloading the project from Github or even easier using CocoaPods try `pod try SDWebImage`
2018-01-31 11:40:51 +08:00
- Read the [Installation Guide ](https://github.com/rs/SDWebImage/wiki/Installation-Guide )
2016-10-07 18:02:07 +08:00
- Read the [SDWebImage 4.0 Migration Guide ](Docs/SDWebImage-4.0-Migration-guide.md ) to get an idea of the changes from 3.x to 4.x
2018-01-31 11:40:51 +08:00
- Read the [Common Problems ](https://github.com/rs/SDWebImage/wiki/Common-Problems ) to find the solution for common problems
- Go to the [Wiki Page ](https://github.com/rs/SDWebImage/wiki ) for more information such as [Advanced Usage ](https://github.com/rs/SDWebImage/wiki/Advanced-Usage )
2016-05-10 13:39:46 +08:00
## Who Uses It
- Find out [who uses SDWebImage ](https://github.com/rs/SDWebImage/wiki/Who-Uses-SDWebImage ) and add your app to the list.
2016-05-29 02:52:11 +08:00
## Communication
2016-05-29 03:08:31 +08:00
- If you **need help** , use [Stack Overflow ](http://stackoverflow.com/questions/tagged/sdwebimage ). (Tag 'sdwebimage')
- If you'd like to **ask a general question** , use [Stack Overflow ](http://stackoverflow.com/questions/tagged/sdwebimage ).
- If you **found a bug** , open an issue.
- If you **have a feature request** , open an issue.
- If you **want to contribute** , submit a pull request.
2016-05-29 02:52:11 +08:00
2016-05-10 13:39:46 +08:00
## How To Use
2018-01-31 11:40:51 +08:00
* Objective-C
2009-09-21 10:29:00 +08:00
2018-01-31 11:40:51 +08:00
```objective-c
2016-05-10 13:50:55 +08:00
#import <SDWebImage/UIImageView+WebCache.h>
2012-05-09 17:33:38 +08:00
...
2016-05-10 13:50:55 +08:00
[imageView sd_setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
2012-05-09 17:33:38 +08:00
```
2009-09-21 10:29:00 +08:00
2018-01-31 11:40:51 +08:00
* Swift
2009-09-21 10:29:00 +08:00
2018-01-31 11:40:51 +08:00
```swift
2017-03-29 17:29:52 +08:00
import SDWebImage
2017-01-28 03:32:08 +08:00
2016-11-30 22:40:28 +08:00
imageView.sd_setImage(with: URL(string: "http://www.domain.com/path/to/image.jpg"), placeholderImage: UIImage(named: "placeholder.png"))
2012-05-09 17:33:38 +08:00
```
2009-09-20 03:14:40 +08:00
2016-10-07 18:02:07 +08:00
- For details about how to use the library and clear examples, see [The detailed How to use ](Docs/HowToUse.md )
2012-05-09 17:04:09 +08:00
2016-06-10 12:04:34 +08:00
## Animated Images (GIF) support
2016-12-02 13:51:28 +08:00
- Starting with the 4.0 version, we rely on [FLAnimatedImage ](https://github.com/Flipboard/FLAnimatedImage ) to take care of our animated images.
2017-02-12 22:04:11 +08:00
- If you use cocoapods, add `pod 'SDWebImage/GIF'` to your podfile.
2016-12-02 13:51:28 +08:00
- To use it, simply make sure you use `FLAnimatedImageView` instead of `UIImageView` .
2018-01-31 11:00:09 +08:00
- **Note**: there is a backwards compatible feature, so if you are still trying to load a GIF into a `UIImageView` , it will only show the 1st frame as a static image by default. However, you can enable the full GIF support by using the built-in GIF coder. See [GIF coder ](https://github.com/rs/SDWebImage/wiki/Advanced-Usage#gif-coder )
2018-02-01 13:06:36 +08:00
- **Important**: FLAnimatedImage only works on the iOS platform. For macOS, use `NSImageView` with `animates` set to `YES` to show the entire animated images and `NO` to only show the 1st frame. For all the other platforms (tvOS, watchOS) we will fallback to the backwards compatibility feature described above
2012-05-09 17:04:09 +08:00
2017-05-03 15:46:46 +08:00
## Installation
2012-01-28 06:41:43 +08:00
2014-05-28 14:46:40 +08:00
There are three ways to use SDWebImage in your project:
2016-02-11 05:38:58 +08:00
- using CocoaPods
2016-05-10 13:50:55 +08:00
- using Carthage
- by cloning the project into your repository
2014-05-28 14:46:40 +08:00
### Installation with CocoaPods
[CocoaPods ](http://cocoapods.org/ ) is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries in your projects. See the [Get Started ](http://cocoapods.org/#get_started ) section for more details.
#### Podfile
```
2016-06-03 00:10:31 +08:00
platform :ios, '7.0'
2017-06-23 21:23:06 +08:00
pod 'SDWebImage', '~> 4.0'
2014-05-28 14:46:40 +08:00
```
2012-01-28 06:41:43 +08:00
2015-09-22 11:10:14 +08:00
If you are using Swift, be sure to add `use_frameworks!` and set your target to iOS 8+:
```
platform :ios, '8.0'
use_frameworks!
```
2015-10-06 21:59:48 +08:00
#### Subspecs
2017-02-07 15:49:50 +08:00
There are 4 subspecs available now: `Core` , `MapKit` , `GIF` and `WebP` (this means you can install only some of the SDWebImage modules. By default, you get just `Core` , so if you need `WebP` , you need to specify it).
2015-10-06 21:59:48 +08:00
Podfile example:
```
2015-10-26 17:39:19 +08:00
pod 'SDWebImage/WebP'
2015-10-06 21:59:48 +08:00
```
2015-03-15 03:06:39 +08:00
### Installation with Carthage (iOS 8+)
2015-09-12 02:59:51 +08:00
[Carthage ](https://github.com/Carthage/Carthage ) is a lightweight dependency manager for Swift and Objective-C. It leverages CocoaTouch modules and is less invasive than CocoaPods.
2015-03-15 03:06:39 +08:00
To install with carthage, follow the instruction on [Carthage ](https://github.com/Carthage/Carthage )
#### Cartfile
```
github "rs/SDWebImage"
```
2014-11-06 20:20:35 +08:00
### Installation by cloning the repository
2017-01-28 02:32:26 +08:00
- see [Manual install ](Docs/ManualInstallation.md )
2014-08-27 20:10:27 +08:00
2012-05-10 06:30:48 +08:00
### Import headers in your source files
2012-09-02 18:40:21 +08:00
In the source files where you need to use the library, import the header file:
2012-05-10 06:30:48 +08:00
```objective-c
#import <SDWebImage/UIImageView+WebCache.h>
```
2012-01-28 06:41:43 +08:00
2012-04-26 06:05:43 +08:00
### Build Project
2012-05-10 06:30:48 +08:00
At this point your workspace should build without error. If you are having problem, post to the Issue and the
community can help you solve it.
2012-04-26 06:05:43 +08:00
2016-10-01 14:03:41 +08:00
## Author
- [Olivier Poitrey ](https://github.com/rs )
2009-09-20 03:14:40 +08:00
2016-10-01 14:03:41 +08:00
## Collaborators
- [Konstantinos K. ](https://github.com/mythodeia )
- [Bogdan Poplauschi ](https://github.com/bpoplauschi )
2017-02-19 20:55:31 +08:00
- [Chester Liu ](https://github.com/skyline75489 )
2017-07-31 23:36:11 +08:00
- [DreamPiggy ](https://github.com/dreampiggy )
2012-11-05 00:47:56 +08:00
## Licenses
2012-11-05 19:20:18 +08:00
All source code is licensed under the [MIT License ](https://raw.github.com/rs/SDWebImage/master/LICENSE ).
2016-05-10 13:39:46 +08:00
## Architecture
< p align = "center" >
2016-05-10 13:50:55 +08:00
< img src = "Docs/SDWebImageClassDiagram.png" title = "SDWebImage class diagram" >
2016-05-10 13:39:46 +08:00
< / p >
2016-05-18 00:02:45 +08:00
< p align = "center" >
< img src = "Docs/SDWebImageSequenceDiagram.png" title = "SDWebImage sequence diagram" >
< / p >