[MISSAJJ原创]cell内 通过SDWebImage自定义创建动态菊花加载指示器
最后更新已经放到了github上了
MISSAJJ自己写的一个基于SDWebImage自定义的管理网络图片加载的工具类(普通图片加载,渐现Alpha图片加载,菊花Indicator动画加载)
经常在项目里要用到SDWebImage的类来异步加载图片,于是考虑用代码分层的理念和方案,单独写了一个MAImageViewTool工具类用于调用SDWebImage异步加载图片,后期如果项目需要修改就只需要在这个工具类里改写和调试,不用在整个项目里批量寻找再一段一段改写代码了,提高了效率。
在这个类里增加了渐现Alpha图片加载和菊花Indicator动画加载的效果,有需要的攻城狮可以用来看看效果。
https://github.com/MISSAJJ/MAImageViewTool
/**
* cell内 普通图片加载 */ [cell.imageView sd_setImageWithURL:[NSURL URLWithString:imageToLoad] placeholderImage: [UIImage imageNamed:EMPTY_IMAGE]]; /**
* cell内 自定义创建图片动态加载指示器 */ __block UIActivityIndicatorView * indicatorPlaceholder; [cell.imageView sd_setImageWithURL:[NSURL URLWithString:imageToLoad] placeholderImage:nil options:SDWebImageCacheMemoryOnly progress:^(NSInteger receivedSize, NSInteger expectedSize) { //创建指示器:必须放在线程内才不会报错 dispatch_async(dispatch_get_main_queue(), ^{ if(!indicatorPlaceholder){ [cell.imageView addSubview:indicatorPlaceholder = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]]; indicatorPlaceholder.center = cell.imageView.center; [indicatorPlaceholder startAnimating]; } }); } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { //如果图片未缓存 渐现效果 if (cacheType == SDImageCacheTypeNone) { cell.imageView.alpha = 0.5; [UIView animateWithDuration:1.0 animations:^{ cell.imageView.alpha = 1.0; }]; } // 消除指示器 这种删除比较彻底
for (UIView * view in [cell.imageView subviews]) {
if ([view isKindOfClass:[UIActivityIndicatorView class]]) {
[view removeFromSuperview];
}
}
//这种删除方法会有bug,清楚缓存后重载,某些cell上还是会有菊花
//if (indicatorPlaceholder) { //[indicatorPlaceholder removeFromSuperview]; //indicatorPlaceholder = nil; //} }];
[MISSAJJ原创]cell内 通过SDWebImage自定义创建动态菊花加载指示器的更多相关文章
- 使用SDWebImage淡入淡出的方式加载图片
使用SDWebImage淡入淡出的方式加载图片 效果: 请通过以下方式下载源码: 找到它修改文件的地方: 以下是使用源码: // // ViewController.m // SDWebImageFa ...
- 自定义progressDialog(数据加载框)的实现
大家在开发客户端时基本上都需要获取数据,在获取数据时会有一个等待状态,这时我们可以利用系统自带的progressDialog来向用户展示"数据正在加载中..."等等,但有时我们会觉 ...
- 使用谷歌提供的SwipeRefreshLayout下拉控件,并自定义实现下拉加载的功能
package com.loaderman.swiperefreshdemo; import android.os.Bundle; import android.os.Handler; import ...
- 2.3 spring5源码系列---内置的后置处理器PostProcess加载源码
本文涉及主题 1. BeanFactoryPostProcessor调用过程源码剖析 2. 配置类的解析过程源码 3. 配置类@Configuration加与不加的区别 4. 重复beanName的覆 ...
- Spring源码之IOC容器创建、BeanDefinition加载和注册和IOC容器依赖注入
总结 在SpringApplication#createApplicationContext()执行时创建IOC容器,默认DefaultListableBeanFactory 在AbstractApp ...
- 在Unity中创建可远程加载的.unity3d包
在一个Unity项目中,发布包本身不一定要包括所有的Asset(译为资产或组件),其它的部分可以单独发布为.unity3d,再由程序从本地/远程加载执行,这部分不在本文讨论范围.虽然Unity并没有直 ...
- javascript动态创建script标签,加载完成后调用回调
代码如下: var head = document.getElementsByTagName('head')[0]; var script = document.createElement('scri ...
- 自定义的插件如何加载到Qt Designer中(详细)
要想在Qt Designer中使用自定义控件,必须要使Qt Designer能够知道我们的自定义控件的存在.有两种方法可以把新自定义控件的信息通知给Qt Designer:“升级(promotion) ...
- xcode UIImageView创建、图片加载、 音频文件播放、 延迟调用
代码创建 /** 创建UIImageView */ UIImageView * imageView=[[UIImageView alloc]init]; /** 设置尺寸位置 */ imageView ...
随机推荐
- 什么是Unicode letter
起因:从一段代码说起 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...
- 【jQuery】【转】jQuery中的trigger和triggerHandler区别
trigger(event, [data]) 在每一个匹配的元素上触发某类事件. 这个函数也会导致浏览器同名的默认行为的执行.比如,如果用trigger()触发一个'submit',则同样会导致浏览器 ...
- 获得本机IP,并且将ip放在CIpAdress里
char szHostName[MAX_PATH + 1]; gethostname(szHostName, MAX_PATH); //得到计算机名 hostent *p = gethostbynam ...
- myeclipse10 优化设置
http://it.oyksoft.com/post/5898/ 一.Myeclipse10修改字体MyEclipse10是基于Eclipse3.7内核,但在Eclipse的Preferences-〉 ...
- [Python]实现简单决策树
基本思路: 通过香农熵来决定每一层使用哪一种标签做分类,分类后,通过多数表决法来决定该层两个节点的类别.每次消耗一个标签,所以一共需要递归"标签个数"层. # -*- coding ...
- Centos中tomcat7指定jdk
服务器上默认的jdk是1.8的,但是我想我的tomcat指定一个自定义的jdk怎么办呢,莫急,待老夫慢慢道来. 1.需要有一个除默认外的jdk的安装包(不用配置任何环境变量),如下图: 2.进入tom ...
- java文章显示内容部分(将html转成纯文本)
public static String splitAndFilterString(String input, int length) { if (input == null || input.tri ...
- jq 实现上下排序的一段代码
前台页面: <div class="adddaren_box"> {%if isset($masterDetailsInfo)%} <div class=&quo ...
- 金融IC卡 ARQC和ARPC计算方法和实例(转)
假设发卡行的IC卡应用密钥如下: PBOC_IMK_AC F0C34A8124CEE0A91A0B034AA97D6EAC PBOC_IMK_ENC ...
- easyui 复选框 onClickRow事件与onSelect事件与onCheck事件
在项目中一直存在一个问题,一直都没发现问题的根源在哪里.在我们测试这边也是偶尔会出现.但是每次我去测试的时候也没问题.今天终于找到原因了! 在easyui中点击行和点击复选框触发的事件是不一样的! 点 ...