CAGradientLayer功能
一、CAGradientLayer介绍
、CAGradientLayer是用于处理渐变色的层结构
、CAGradientLayer的渐变色能够做隐式动画
、大部分情况下。CAGradientLayer都是与CAShapeLayer配合使用的
、CAGradientLayer能够用作png遮罩效果
二、CAGradientLayer坐标系统
1、CAGradientLayer的坐标系统是从坐标(0,0)到(1,1)绘制的矩形
、CAGradientLayer的frame值的size不为正方形的话,坐标系统会被拉伸
、CAGradientLayer的startPoint与endPoint会直接影响颜色的绘制方向
、CAGradientLayer的颜色切割点是以到的比例来计算的
三、色差动画的实现
1、确定渐变色渐变方向
2、设定两种颜色,当中一种是透明色,第二种是自己定义颜色
3、设定好location颜色切割点值
、CAGradientLayer的颜色切割点是以到的比例来计算的
@property (nonatomic,strong) CAGradientLayer *gradientLayer;//渐变层
@property (nonatomic,strong) NSTimer *timer; //
定时器
- (void) colors {
self.view.backgroundColor = [UIColorblackColor];
//
创建背景图片
UIImageView *imageView = [[UIImageViewalloc] initWithImage:[UIImageimageNamed:@"bg"]];
imageView.center =self.view.center;
[self.viewaddSubview:imageView];
//
初始化渐变层
self.gradientLayer = [CAGradientLayerlayer];
self.gradientLayer.frame = imageView.bounds;
[imageView.layeraddSublayer:self.gradientLayer];
//设定颜色渐变方向
,);
,);
//
设定颜色组
self.gradientLayer.colors =@[(__bridgeid)[UIColorclearColor].CGColor,
(__bridgeid)[UIColorredColor].CGColor];
//
设定颜色切割点
self.gradientLayer.locations =
@[@(0.5f), @(1.f)];
//
初始化定时器
self.timer = [NSTimerscheduledTimerWithTimeInterval:2.f
target:self
selector:@selector(timerEvent)
userInfo:nil
repeats:YES];
}
- (void)timerEvent {
//
设定颜色组动画
self.gradientLayer.colors =@[(__bridgeid)[UIColorclearColor].CGColor,
(__bridgeid)[UIColorcolorWithRed:arc4random() % /255.f
green:arc4random() % /255.f
blue:arc4random() % /255.f
alpha:].CGColor];
//设定颜色切割点动画
/10.f),@(1.f)];
}
四、用CAGradientLayer实现带色差动画的View
1、确定几个属性值
2、确定能够做动画的參数
3、重写setter方法做动画
typedefenum : NSUInteger {
UP, // 从上往下
DOWN, // 从下往上
RIGHT,// 从右往左
LEFT, // 从左往右
} EColorDirection;
@interface ColorUIImageView :UIImageView
/**
* 确定方向(能够做动画)
*/
@property (nonatomic,assign) EColorDirection direction;
/**
* 颜色(能够做动画)
*/
@property (nonatomic,strong)UIColor *color;
/**
* 百分比(能够做动画)
*/
@property (nonatomic,assign)CGFloat percent;
@end
#import "ColorUIImageView.h"
@interface
ColorUIImageView ()
@property (nonatomic,strong)CAGradientLayer *gradientLayer;
@end
@implementation ColorUIImageView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [superinitWithFrame:frame];
if (self) {
//
初始化CAGradientLayer
self.gradientLayer = [CAGradientLayerlayer];
self.gradientLayer.frame =self.bounds;
self.gradientLayer.colors =@[(__bridgeid)[UIColorclearColor].CGColor,
(__bridgeid)[UIColorredColor].CGColor];
self.gradientLayer.locations =@[@(1),@(1)];
[self.layeraddSublayer:self.gradientLayer];
}
return
self;
}
#pragma mark - 重写setter,getter方法
@synthesize color = _color;
- (void)setColor:(UIColor *)color {
_color = color;
self.gradientLayer.colors =@[(__bridgeid)[UIColorclearColor].CGColor,
(__bridgeid)color.CGColor];
}
- (UIColor *)color {
return _color;
}
@synthesize percent =_percent;
- (void)setPercent:(CGFloat)percent {
_percent = percent;
self.gradientLayer.locations =@[@(percent),@(1)];
}
- (CGFloat)percent {
return_percent;
}
@synthesize direction =_direction;
- (void)setDirection:(EColorDirection)direction {
_direction = direction;
if (direction == UP) {
,);
,);
}else if (direction ==DOWN) {
,);
,);
}else if (direction ==RIGHT) {
,);
,);
}else if (direction ==LEFT) {
,);
,);
}else {
,);
,);
}
}
- (EColorDirection)direction {
return_direction;
}
@end
#import "ColorUIImageView.h"
@interface ViewController ()
@property (nonatomic,strong)ColorUIImageView *colorView;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
,,,
)];
self.colorView.center =self.view.center;
self.colorView.image = [UIImageimageNamed:@"bg"];
[self.viewaddSubview:self.colorView];
[selfperformSelector:@selector(event)
withObject:nil
afterDelay:1.f];
}
- (void)event {
self.colorView.direction =DOWN;
self.colorView.color = [UIColorcyanColor];
self.colorView.percent =0.5;
}
@end
CAGradientLayer功能的更多相关文章
- iOS之小功能模块--彩虹动画进度条学习和自主封装改进
前言: 首先展示一下这个iOS小示例的彩色进度条动画效果: 阅读本文先说说好处:对于基础不好的读者,可以直接阅读文末尾的"如何使用彩虹动画进度条"章节,然后将我封装好的这个功能模块 ...
- iOS 之使用CAShapeLayer中的CAGradientLayer实现圆环的颜色渐变
本文转载自:http://blog.csdn.net/zhoutao198712/article/details/20864143 在 Github上看到一些进度条的功能,都是通过Core Graph ...
- Reader开发(二)增加PDF阅读功能
最近任务很多很忙,所以更新博客的速度很慢. 大概上周就为Reader加了一个PDF阅读的功能,但是一直没时间写上来.昨晚找一下文件发现扩展了功能的Demo居然在文件目录下看不到任何文件,但是却显示有文 ...
- 将CAGradientLayer用作maskView的遮罩图层
将CAGradientLayer用作maskView的遮罩图层 说明 CAGradientLayer可以用作alpha遮罩,供maskView使用,这两种东西都是非常偏门的东西,但是,偏门不代表功能不 ...
- 制作类似ThinkPHP框架中的PATHINFO模式功能
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...
- PHP搭建大文件切割分块上传功能
背景 在网站开发中,文件上传是很常见的一个功能.相信很多人都会遇到这种情况,想传一个文件上去,然后网页提示"该文件过大".因为一般情况下,我们都需要对上传的文件大小做限制,防止出现 ...
- SQL Server2014 SP2新增的数据库克隆功能
SQL Server2014 SP2新增的数据库克隆功能 创建测试库 --创建测试数据库 create database testtest use testtest go --创建表 )) --插入数 ...
- SQL Server 数据加密功能解析
SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...
- Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)
背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...
随机推荐
- 诊断Java中的内存泄露
每次我怀疑有内存泄漏时,我都要翻箱倒柜找这些命令.所以,这里总结一下以备后用: 首先,我用下面的命令监视进程: 1 while ( sleep 1 ) ; do ps -p $PID -o %cpu, ...
- MFC_1.1 基本知识
如何创建一个MFC项目 选择 MFC 应用程序进行创建,不要使用非英文名 选择对话框风格进行编写 可以通过自定义的设置修改类名 MFC 的基本知识 MFC 是纯面向对象的编程,是 SDK 经过 C++ ...
- CAD插入图片
在CAD设计绘图时,需要插入外部图片,可以设置图片的缩放比例.旋转角度.图片显示文件名等属性. 主要用到函数说明: _DMxDrawX::DrawImageMark 绘图制一个图象标记对象.详细说明如 ...
- 梦想CAD控件 2018.10.15更新
下载地址: http://www.mxdraw.com/ndetail_10105.html 1. 完善com接口的ToCurves函数,转换CAD文字,多行文字到曲线 2. 修改DrawImage接 ...
- pringboot开启找回Run Dashboard
代码中加入 <option name="configurationTypes"> <set> <option value="SpringBo ...
- 【转载】jxl的使用总结(java操作excel)
jxl.jar是通过java操作excel表格的工具类库: 链接:https://pan.baidu.com/s/1AAT_eA_Q47zFeQohap6eQg 提取码:777b 1:通过模拟实现创建 ...
- 在做导入一个excel文件的时候,数据有空值的时候
StringUtil.isNotEmpty(i.getFname()),用这个方法可以解决 java string 去除前后两端的空格和空字符使用.trim()
- JAVA基础——Native关键字
一:native声明 在Java中native是关键字.它一般在本地声明,异地用C和C++来实现.它的声明有几点要注意: 1)native与访问控制符前后的关系不受限制. 2)必须在返回类型之前. 3 ...
- 简单的jsonp实现跨域原理
什么原因使jsonp诞生? 传说,浏览器有一个很重要的安全限制,叫做"同源策略".同源是指,域名,协议,端口相同.举个例子,用一个浏览器分别打开了百度和谷歌页面,百度页面在执行脚 ...
- python3.x Day3 文件编码
文件编码: 知识点不多,但及其重要,python2和python3处理机制还有不同点,需要注意. 首先: 编码.数据类型,完全不同的概念. 文件编码:可以遵循开发环境.可以自行设定. 变量值编码:py ...