用SDWebImage渐变加载图片
用SDWebImage渐变加载图片
使用
使用请详细查看源码,只需要给定一个图片地址以及一个placeHolder图片(非必须)即可。
效果
源码
https://github.com/YouXianMing/UI-Component-Collection 中的 SDWebImageViewPlaceHorder
- //
- // PlaceholderImageView.h
- // SDWebImageViewPlaceHorder
- //
- // Created by YouXianMing on 16/8/19.
- // Copyright © 2016年 YouXianMing. All rights reserved.
- //
- #import <UIKit/UIKit.h>
- @interface PlaceholderImageView : UIView
- /**
- * Picture's url string.
- */
- @property (nonatomic, strong) NSString *urlString;
- /**
- * The placeholder's image.
- */
- @property (nonatomic, strong) UIImage *placeholderImage;
- /**
- * Default is UIViewContentModeScaleAspectFill.
- */
- @property (nonatomic) UIViewContentMode placeholderImageContentMode;
- /**
- * Default is UIViewContentModeScaleAspectFill.
- */
- @property (nonatomic) UIViewContentMode contentImageContentMode;
- /**
- PlaceholderImageView's constractor.
- @param frame The Frame.
- @param image The placeholderImage.
- @return The PlaceholderImageView's instancetype.
- */
- + (instancetype)placeholderImageViewWithFrame:(CGRect)frame placeholderImage:(UIImage *)image;
- @end
- //
- // PlaceholderImageView.m
- // SDWebImageViewPlaceHorder
- //
- // Created by YouXianMing on 16/8/19.
- // Copyright © 2016年 YouXianMing. All rights reserved.
- //
- #import "PlaceholderImageView.h"
- #import "UIImageView+WebCache.h"
- @interface PlaceholderImageView ()
- @property (nonatomic, strong) UIImageView *placeHoderImageView;
- @property (nonatomic, strong) UIImageView *contentImageView;
- @property (nonatomic, strong) NSString *pUrlString;
- @end
- @implementation PlaceholderImageView
- - (void)layoutSubviews {
- [super layoutSubviews];
- self.placeHoderImageView.frame = self.bounds;
- self.contentImageView.frame = self.bounds;
- }
- - (instancetype)initWithFrame:(CGRect)frame {
- if (self = [super initWithFrame:frame]) {
- self.layer.masksToBounds = YES;
- self.placeHoderImageView = [[UIImageView alloc] initWithFrame:self.bounds];
- self.contentImageView = [[UIImageView alloc] initWithFrame:self.bounds];
- [self addSubview:self.placeHoderImageView];
- [self addSubview:self.contentImageView];
- self.contentImageContentMode = UIViewContentModeScaleAspectFill;
- self.placeholderImageContentMode = UIViewContentModeScaleAspectFill;
- }
- return self;
- }
- + (instancetype)placeholderImageViewWithFrame:(CGRect)frame placeholderImage:(UIImage *)image {
- PlaceholderImageView *placeHolderImageView = [[PlaceholderImageView alloc] initWithFrame:frame];
- placeHolderImageView.placeholderImage = image;
- return placeHolderImageView;
- }
- #pragma mark - Setter & Getter.
- - (void)setPlaceholderImage:(UIImage *)placeholderImage {
- _placeHoderImageView.image = placeholderImage;
- }
- - (UIImage *)placeholderImage {
- return _placeHoderImageView.image;
- }
- - (void)setUrlString:(NSString *)urlString {
- _pUrlString = urlString;
- _contentImageView.alpha = .f;
- NSURL *url = [NSURL URLWithString:urlString];
- [_contentImageView sd_setImageWithURL:url completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
- if (image) {
- // Image load from disk or download from network.
- if (cacheType == SDImageCacheTypeNone || cacheType == SDImageCacheTypeDisk) {
- [UIView animateWithDuration:0.5f animations:^{
- _contentImageView.alpha = .f;
- }];
- } else {
- _contentImageView.alpha = .f;
- }
- }
- }];
- }
- - (NSString *)urlString {
- return _pUrlString;
- }
- - (void)setPlaceholderImageContentMode:(UIViewContentMode)placeholderImageContentMode {
- _placeHoderImageView.contentMode = placeholderImageContentMode;
- }
- - (UIViewContentMode)placeholderImageContentMode {
- return _placeHoderImageView.contentMode;
- }
- - (void)setContentImageContentMode:(UIViewContentMode)contentImageContentMode {
- _contentImageView.contentMode = contentImageContentMode;
- }
- - (UIViewContentMode)contentImageContentMode {
- return _contentImageView.contentMode;
- }
- @end
用SDWebImage渐变加载图片的更多相关文章
- 李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片
李洪强iOS开发之 - 实现九宫格并使用SDWebImage下载图片 源码: // // ViewController.m // 08-九宫格扩展 // // Created by 李洪强 ...
- SDWebImage实现图片缓存
我之前写过一篇博客,介绍缓存处理的三种方式,其中最难,最麻烦,最占内存资源的还是图片缓存,最近做的项目有大量的图片处理,还是采用了SDWebImage来处理,但是发现之前封装好的代码报错了.研究发现, ...
- SDWebImage下载图片的使用
第一步,下载SDWebImage,导入工程.github托管地址https://github.com/rs/SDWebImage 第二步,在需要的地方导入头文件 1 #import "UII ...
- SDWebImage下载图片有时候无法成功显示出来
之前用下面的方法现在图片,有时候会出现图片没有下载成功显示: - (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)p ...
- SDWebImage清除图片缓存
背景: 使用 SDWebImage 库,由于内存中一直缓存着加载的图片,而导致内存过高(我们无法手动管理内存),弹出内存警告而导致程序很卡或者直接crash掉. 我的解决方法: 在AppDelegat ...
- 使用SDWebImage下载图片,sharedDownloader方法下载成功,new 方法下载失败
一,经历 1.使用 new 方法创建下载对象时,下载图片总是失败,而且不会执行成功或失败后的回调. 2.参考别人的代码,用的是sharedDownloader来创建下载对象,可以顺利下载图片. 3.看 ...
- SDWebImage缓存图片的机制(转)
SDWebImage是一个很厉害的图片缓存的框架.既ASIHttp+AsyncImage之后,我一直使用AFNetworking集成的UIImageView+AFNetworking.h,但后者对于图 ...
- SDWebImage缓存图片的机制
SDWebImage是一个很厉害的图片缓存的框架.既ASIHttp+AsyncImage之后,我一直使用AFNetworking集成的UIImageView+AFNetworking.h,但后者对于图 ...
- sdwebimage缓存图片
当使用SDWebImage时,如果用相同图片名的图片替换掉了原始缓存的图片,当再次请求的时候,还是使用的缓存图片,图片不会发生改变 原因:图片在NSCache中是以absolute url作为key存 ...
随机推荐
- Observer设计模式中-委托事件-应用在消息在窗体上显示
Observer设计模式:监视者模式.在类中的方法中处理的结果或者消息通过事件委托 的方式发送给主窗体. 因为在其它类中直接访问主窗体类,显示内容是不能直接调用控件赋值的,当然也有别的类似查阅控件名, ...
- 2016/10/28 很久没更了 leetcode解题 3sumcloset
16.3Sum Closest Given an array S of n integers, find three integers in S such that the sum is closes ...
- C++变量的左值和右值
变量和文字常量都有存储区,并且有相关的类型. 区别在于变量是寻址的,对于每一个变量,都有两个值与其相关联 1 它的数据值,存储在某个内存地址中.有时这个值也被称为对象的右值 文字常量和变量都可被用作 ...
- kenrnel 驱动中常用的宏
http://blog.csdn.net/uruita/article/details/7263290 1. MODULE_DEVICE_TABLE (usb, skel_table);该宏生成一个名 ...
- 【转】移动端viewport的使用
web端网站转移至移动端页面,注意点如下: 1.首先引入viewport调整页面宽度 <meta name="viewport" content="width=de ...
- 我使用中的Linux命令和快捷键(For Ubuntu)
虽然自己工作一直都在MS的平台体系,自然很多的工作都需要在windows上完成,自己的电脑也一直使用windows操作系统,但是笔记本配置不是很好,导致装windows 8后,笔记本卡的难以忍受.想想 ...
- Dynamic CRM 2013学习笔记(九)CrmFetchKit.js介绍:Fetchxml、多表联合查询, 批量更新
CrmFetchKit.js是一个跨浏览器的一个类库,允许通过JavaScript来执行fetch xml的查询,还可以实现批量更新,分页查询等.目前已支持Chrome 25, Firefox 19 ...
- Windows7上搭建Cocos2d-x 3.1.1开发环境
前言 现在,越来越多的公司采用Cocos2d-x 3.0来开发游戏了,但是现在这样的文章并不多,所以打算写一系列来帮助初学者快速掌握Cocos2d-x 3.0.首先就从开发环境的大家说起吧. 开发工具 ...
- 解决阿里云SLB无法添加https证书的问题
私钥是在Linux中通过下面的openssl命令生成的: openssl req -new -newkey rsa:2048 -nodes -keyout cnblogs.key -out cnblo ...
- C++11 并发指南六(atomic 类型详解三 std::atomic (续))
C++11 并发指南六( <atomic> 类型详解二 std::atomic ) 介绍了基本的原子类型 std::atomic 的用法,本节我会给大家介绍C++11 标准库中的 std: ...