最后更新已经放到了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自定义创建动态菊花加载指示器的更多相关文章

  1. 使用SDWebImage淡入淡出的方式加载图片

    使用SDWebImage淡入淡出的方式加载图片 效果: 请通过以下方式下载源码: 找到它修改文件的地方: 以下是使用源码: // // ViewController.m // SDWebImageFa ...

  2. 自定义progressDialog(数据加载框)的实现

    大家在开发客户端时基本上都需要获取数据,在获取数据时会有一个等待状态,这时我们可以利用系统自带的progressDialog来向用户展示"数据正在加载中..."等等,但有时我们会觉 ...

  3. 使用谷歌提供的SwipeRefreshLayout下拉控件,并自定义实现下拉加载的功能

    package com.loaderman.swiperefreshdemo; import android.os.Bundle; import android.os.Handler; import ...

  4. 2.3 spring5源码系列---内置的后置处理器PostProcess加载源码

    本文涉及主题 1. BeanFactoryPostProcessor调用过程源码剖析 2. 配置类的解析过程源码 3. 配置类@Configuration加与不加的区别 4. 重复beanName的覆 ...

  5. Spring源码之IOC容器创建、BeanDefinition加载和注册和IOC容器依赖注入

    总结 在SpringApplication#createApplicationContext()执行时创建IOC容器,默认DefaultListableBeanFactory 在AbstractApp ...

  6. 在Unity中创建可远程加载的.unity3d包

    在一个Unity项目中,发布包本身不一定要包括所有的Asset(译为资产或组件),其它的部分可以单独发布为.unity3d,再由程序从本地/远程加载执行,这部分不在本文讨论范围.虽然Unity并没有直 ...

  7. javascript动态创建script标签,加载完成后调用回调

    代码如下: var head = document.getElementsByTagName('head')[0]; var script = document.createElement('scri ...

  8. 自定义的插件如何加载到Qt Designer中(详细)

    要想在Qt Designer中使用自定义控件,必须要使Qt Designer能够知道我们的自定义控件的存在.有两种方法可以把新自定义控件的信息通知给Qt Designer:“升级(promotion) ...

  9. xcode UIImageView创建、图片加载、 音频文件播放、 延迟调用

    代码创建 /** 创建UIImageView */ UIImageView * imageView=[[UIImageView alloc]init]; /** 设置尺寸位置 */ imageView ...

随机推荐

  1. 什么是Unicode letter

    起因:从一段代码说起 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  2. 【jQuery】【转】jQuery中的trigger和triggerHandler区别

    trigger(event, [data]) 在每一个匹配的元素上触发某类事件. 这个函数也会导致浏览器同名的默认行为的执行.比如,如果用trigger()触发一个'submit',则同样会导致浏览器 ...

  3. 获得本机IP,并且将ip放在CIpAdress里

    char szHostName[MAX_PATH + 1]; gethostname(szHostName, MAX_PATH); //得到计算机名 hostent *p = gethostbynam ...

  4. myeclipse10 优化设置

    http://it.oyksoft.com/post/5898/ 一.Myeclipse10修改字体MyEclipse10是基于Eclipse3.7内核,但在Eclipse的Preferences-〉 ...

  5. [Python]实现简单决策树

    基本思路: 通过香农熵来决定每一层使用哪一种标签做分类,分类后,通过多数表决法来决定该层两个节点的类别.每次消耗一个标签,所以一共需要递归"标签个数"层. # -*- coding ...

  6. Centos中tomcat7指定jdk

    服务器上默认的jdk是1.8的,但是我想我的tomcat指定一个自定义的jdk怎么办呢,莫急,待老夫慢慢道来. 1.需要有一个除默认外的jdk的安装包(不用配置任何环境变量),如下图: 2.进入tom ...

  7. java文章显示内容部分(将html转成纯文本)

    public static String splitAndFilterString(String input, int length) { if (input == null || input.tri ...

  8. jq 实现上下排序的一段代码

    前台页面: <div class="adddaren_box"> {%if isset($masterDetailsInfo)%} <div class=&quo ...

  9. 金融IC卡 ARQC和ARPC计算方法和实例(转)

    假设发卡行的IC卡应用密钥如下:   PBOC_IMK_AC               F0C34A8124CEE0A91A0B034AA97D6EAC PBOC_IMK_ENC           ...

  10. easyui 复选框 onClickRow事件与onSelect事件与onCheck事件

    在项目中一直存在一个问题,一直都没发现问题的根源在哪里.在我们测试这边也是偶尔会出现.但是每次我去测试的时候也没问题.今天终于找到原因了! 在easyui中点击行和点击复选框触发的事件是不一样的! 点 ...