CAGradientLayer学习
来源:互联网 发布:excel怎么求数据的方差 编辑:程序博客网 时间:2024/05/21 00:47
这个东西很简单,这里只做基本的使用,以此作为笔记,俗话说 好记性不如烂笔头嘛。
CAGradientLayer这个鬼东西也是继承layer,下面将通过两个例子来说明具体的使用。
首先
这里先看一下这里面的东西
/* The array of CGColorRef objects defining the color of each gradient * stop. Defaults to nil. Animatable. */@property(nullable, copy) NSArray *colors;/* An optional array of NSNumber objects defining the location of each * gradient stop as a value in the range [0,1]. The values must be * monotonically increasing. If a nil array is given, the stops are * assumed to spread uniformly across the [0,1] range. When rendered, * the colors are mapped to the output colorspace before being * interpolated. Defaults to nil. Animatable. */@property(nullable, copy) NSArray<NSNumber *> *locations;/* The start and end points of the gradient when drawn into the layer's * coordinate space. The start point corresponds to the first gradient * stop, the end point to the last gradient stop. Both points are * defined in a unit coordinate space that is then mapped to the * layer's bounds rectangle when drawn. (I.e. [0,0] is the bottom-left * corner of the layer, [1,1] is the top-right corner.) The default values * are [.5,0] and [.5,1] respectively. Both are animatable. */@property CGPoint startPoint;@property CGPoint endPoint;colors和location都是支持隐私动画的,通过上面 .h文件可以看出,CAGradientLayer的基本用法。
实例
先来看一个例子:
代码如下:
- (void)test{ UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 40)]; label.center = self.view.center; label.font = [UIFont systemFontOfSize:35]; label.backgroundColor = [UIColor clearColor]; label.textAlignment = NSTextAlignmentCenter; label.text = @"吴松——Asong"; //这里是label是用来做文字裁剪作用 [self.view addSubview:label]; CAGradientLayer *gradientLayer1 = [CAGradientLayer layer]; gradientLayer1.frame = label.frame; CGColorRef red = [UIColor redColor].CGColor; CGColorRef purple = [UIColor purpleColor].CGColor; CGColorRef yellow = [UIColor yellowColor].CGColor; CGColorRef orange = [UIColor orangeColor].CGColor; //添加颜色变化,NSArray *colors;是个数组 [gradientLayer1 setColors:@[(__bridge id)red, (__bridge id)purple, (__bridge id)yellow, (__bridge id)orange]]; //用来划分显示颜色的区间,不设置的话,会是平均值 [gradientLayer1 setLocations:@[@0.3, @0.6, @0.8, @1.0]]; //Default: StartPoint :[.5,0] [gradientLayer1 setStartPoint:CGPointMake(0, 0)]; //Default: EndPoint :[.5,1] [gradientLayer1 setEndPoint:CGPointMake(1, 1)]; //label作为遮罩层 :简单的理解就是有对象(不透明)的地方就显示下面的内容。 gradientLayer1.mask = label.layer; //因为只要这位mask,label的就是从原来的superView移除了,从新粘到gradientLayer1,所以要重置位置 label.frame = gradientLayer1.bounds; [self.view.layer addSublayer:gradientLayer1];}
分析:
上面有的已经做相应的解释了,我就赘述了,我说一下,startPoint和endPoint,他们的默认值是【0.5,0】,【0.5.1】,值的范围是【0~1,0~1】
通过下面的图会更直观(此图来自网络)
是不是很直观。
看到这里,估计会有的同学还有其他的疑惑。
1.为什么要把label先放到view上,然后再移除,再放到gradientLayer上,对的,我才学习的时候,也很疑惑,后来我找到答案了,把label粘到view主要让其绘图。就是执行dradRect方法,不然就不会绘制label。
2.为什么要重新修改label的frame,因为我们设置mask之后,label就会从之前的superView移除,所以这里从新设置frame,不然会出现匪夷所思的问题
总结
是不是感觉很简单呀 ,其实这里是没有办法体现mask的强大之处的,在后面的博客中,笔者会详说mask。
Demo的连接:https://github.com/WSmalan/learn-gradientLayer
有问题或者相关需求的同学可以在下面评论或者联系本人。
联系方式:
qq: 3145419760
微信号:WsMl0612
邮箱:wusong_gongzuo@163.com
0 0
- CAGradientLayer学习
- QuartzCore框架学习-CAGradientLayer
- CAGradientLayer
- CAGradientLayer
- CAGradientLayer
- CAGradientLayer
- CAGradientLayer
- CAGradientLayer简介
- CAGradientLayer简介
- CAGradientLayer简介
- CAGradientLayer使用
- iOS CAGradientLayer
- CAGradientLayer(简用)
- CAGradientLayer简介
- CAGradientLayer简介
- CAGradientLayer功能
- CAGradientLayer 初识
- CAGradientLayer简介
- L1-009. N个数求和
- HashMap&&HshTable以及简单实现HashMap
- 调试休眠和唤醒
- CSS制作水平垂直居中对齐
- HBase原理-数据读取流程解析
- CAGradientLayer学习
- 《ACM程序设计》书中题目Y-25
- |BZOJ 1619|搜索|[Usaco2008 Nov]Guarding the Farm 保卫牧场
- namespace的作用
- 利用先序、后序、中序两两组合重构二叉树(以Java为例)
- final的神奇功能
- HDOJ 1272 小希的迷宫(基础并查集)
- 【LeetCode】74. Search a 2D Matrix
- 使用reaver命令穷举PIN码破解WPA2-PSK加密的无线网络