实现文字的渐变效果

CAGradientLayer 是用来生成两种或更多颜色平滑渐变的 也是一个图层,layer的mask属性也是一个图层(CALayer),mask属性就像一个饼干切割机,mask图层的不透明的部分会被保存下来,透明的部分会被抛弃,也就是说 一个layerA 本身自带一张图片,假设再设置这个layerA的mask属性为layerB,layerB也含有一张图片,那么结果就是 相当于把layerB覆盖到layerA上,大小一样,然后layerA会根据layerB的透明部分裁剪,将透明的部分抛弃,不透明的部分保留,最终显示的是被layerB裁减过的layerA 用一张图表示如下,常用的场景无边框图片气泡:


layerA       layerB     layerA+mask layerB的效果
下面是文字的渐变

CAGradientLayer * gradientLayer = [CAGradientLayerlayer];

// 设置图层的颜色数组

    gradientLayer.colors =@[(__bridgeid)[UIColoryellowColor].CGColor,(__bridgeid)[UIColorredColor].CGColor];

// locations 属性是一个浮点数值的数组(以NSNumber包装),这些浮点数定义了colors属性中每个不同颜色的位置 0.0代表渐变开始,1.0代变结束

 // 一定要确保locations的数组大小和colors数组大小相同

    gradientLayer.locations =@[@0.0,@1.0];

// CAGradientLayer startPoint endPoint属性他们决定了渐变的方向,这两个参数是以单位坐标系进行的定义,所以左上角的左边是{00右下角坐标是{11

    gradientLayer.startPoint =CGPointMake(0,0);

    gradientLayer.endPoint =CGPointMake(1,1);

//    gradientLayer.opacity = 0.5; // 图层的透明度


UILabel * label = [[UILabelalloc] initWithFrame:CGRectMake(100,300, 100, 30)];

    label.text =@"颜色渐变";

    [self.viewaddSubview:label];

//    设置frame

gradientLayer.frame = label.frame;

    [self.view.layeraddSublayer:gradientLayer];

//    将gradientLayer的mask属性设置为label.layer

    gradientLayer.mask = label.layer;

//    重新设置frame  相当于设置gradientLayer的mask的frame 与 本身的frame相等 

//    gradientLayer.mask.frame = gradientLayer.bounds; 与这个意思一样


    label.layer.frame = gradientLayer.bounds;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值