前言:

首先展示一下这个iOS小示例的彩色进度条动画效果:

阅读本文先说说好处:对于基础不好的读者,可以直接阅读文末尾的"如何使用彩虹动画进度条"章节,然后将我封装好的这个功能模块类用到你的工程项目中即可。

这个效果的示例是老外Nick Jensen在2013年写的一个作品:使用CAGradientLayer的动画进度条View。 本人阅读了老外的源码之后,觉得老外这个进度条的效果很不错,但是觉得他写的代码有待改进。

小贴士:读者可以直接将老外的源码下载下来,跑一下,然后对比本人写的博文重构的思路过程,进行学习。另外要提出一点的是,老外这个源码毕竟产出比较早,所以用的是MRC,代码中多出用到了retain和release手动内存管理,但是本人的源码是基于ARC的,所以就不涉及用到手动内存管理的代码了。

注意:本篇博文需要有一定的iOS开发基础,主要需要熟悉并能掌握关于CAGradientLayer(颜色渐变层)、CAShapeLayer(形状层)、核心动画基础以及layer、layer.mask等知识,否则读者看此文会有很多不理解的地方。至少可能看老外的源码都会有很多不懂的地方。关于CAGradientLayer(颜色渐变层)、CAShapeLayer(形状层)可以阅读本人博客中前几篇博文笔记。

正文大纲:

  1. UI效果实现的结构分析
  2. 如何使用彩虹进度条
  3. 不得不提的改进的亮点

    iOS之小功能模块--彩虹动画进度条学习和自主封装改进的更多相关文章

    1. iOS开发之功能模块--关于自定义TabBar条

      只上项目中用到的代码: 1.实现重写TabBar的TabBarItem,然后在中间额外加一个按钮. #import <UIKit/UIKit.h> @interface BikeTabBa ...

    2. 类似 Dribbble 下载按钮的 SVG 弹性动画进度条

      Codrops 发布了一个如何创建一个基于弹性效果的 SVG 加载进度条教程,基于 SVG 和 TweenMax 实现.按钮开始的时候是一个带有箭头的图标,一旦它被点击,动画成一个有趣的小金属丝和一个 ...

    3. CSS3动画进度条

      CSS3动画进度条   CSS CODE: @-webkit-keyframes move{ 0%{ background-position: 0 0; } 100%{ background-posi ...

    4. JS框架_(Progress.js)圆形动画进度条

      百度云盘 传送门 密码: 6mcf 圆形动画进度条效果: <!DOCTYPE html> <html lang="en"> <head> < ...

    5. iOS常用小功能

      CHENYILONG Blog 常用小功能 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong  ...

    6. iOS 常用小功能 总结

      常用小功能 iOS中的很多小功能都是非常简单的,几行代码就搞定了,比如打电话.打开网址.发邮件.发短信等 打电话 方法一(不被采用): 拨号之前会弹框询问用户是否拨号,拨完后能自动回到原应用 NSUR ...

    7. iOS开发之功能模块--高仿Boss直聘的常用语的开发

      首先上Boss直聘的功能界面截图,至于交互请读者现在Boss直聘去交互体验:     本人的公司项目要高仿Boss直聘的IM常用语的交互功能,居然花费了我前后17个小时完成,这回自己测试了很多遍,代码 ...

    8. 【iOS实现一个颜色渐变的弧形进度条】

      在Github上看到一些进度条的功能,都是通过Core Graph来实现.无所谓正确与否,但是开发效率明显就差很多了,而且运行效率还是值得考究的.其实使用苹果提供的Core Animation能够非常 ...

    9. ios开发之--给WebView加载进度条

      不是新东西,就是在项目里面用到H5页面的时候,中间加载延迟的时候,在最上面加载一个进度条,代码如下: // 获取屏幕 宽度.高度 bounds就是屏幕的全部区域 #define KDeviceWidt ...

    随机推荐

    1. 【HTML】Iframe中的onload事件

      当iframe.src重新指定一个url时会重新执行iframe的onload事件 <iframe id="indexFrame" name="index" ...

    2. wamp2.5虚拟站点建立

      1. D:\wamp\bin\apache\Apache2.2.21\conf 目录下打开httpd.conf修改以下几个地方.(软件安装在D盘) (1)178行DocumentRoot " ...

    3. 使用aspose.cell动态导出多表头 EXCEL

      效果图: 前台调用: using System; using System.Collections.Generic; using System.Linq; using System.Web; usin ...

    4. 如何弹出一定的大小的web窗体?

      如何弹出一定的大小的web窗体?  摘自: http://blog.163.com/hweibin126@126/blog/static/17044246920108413348344/ 一.wind ...

    5. 保存登录信息的Cookie加密技术

      所有需要账户登录的website 基本都会想到这样一个问题, 如何保持用户在一定时间内登录有效. 最近本人就在项目中遇到这样的需求,某些页面只能Admin账户登录后访问, 当登录Admin账户后如何才 ...

    6. 自定义饼图(PieChart)各个PieSlice的外观

      C1Chart提供了Theme和Palette接口,其中内置了很多配色方案,调整外观. <c1chart:C1Chart Margin="0,0,8,8" MinHeight ...

    7. 世界上不存在什么RedBSD,SuseBSD或者ArchBSD,Turb...

      世界上不存在什么RedBSD,SuseBSD或者ArchBSD,TurboBSD之类的东西.

    8. 【BZOJ 4326】【NOIP2015】运输计划

      http://www.lydsy.com/JudgeOnline/problem.php?id=4326 题目描述 公元2044年,人类进入了宇宙纪元. 国有个星球,还有条双向航道,每条航道建立在两个 ...

    9. 自定义HttpMessageHandler实现HTTP方法的重写

      自定义HttpMessageHandler实现HTTP方法的重写

    10. Linux_Centos中搭建nexus私服

      1.在Linux下搭建Nexus私服 1).下载并且解压      下载  nexus-2.11.2-03-bundle.zip      unzip nexus-2.11.2-03-bundle.z ...