美文网首页iOS
iOS渐变的文字

iOS渐变的文字

作者: 幻想无极 | 来源:发表于2016-03-17 11:41 被阅读0次
效果图.gif 文字颜色.gif

CAGradientLayer

CAGradientLayer可以方便的处理颜色渐变。
@property(nullable, copy) NSArray *colors; //颜色数组
@property(nullable, copy) NSArray<NSNumber *> *locations;//坐标数组
@property CGPoint startPoint;//开始坐标
@property CGPoint endPoint;//结束坐标

视图层次.png

动画1

//创建遮盖
- (void)createMask
{
    CAGradientLayer *layer = [CAGradientLayer layer];
    layer.frame = self.bounds;
    //透明颜色会透明,实体颜色就是主色调
    layer.colors = @[(id)[UIColor clearColor],(id)[UIColor blueColor].CGColor,(id)[UIColor blackColor].CGColor,(id)[UIColor clearColor].CGColor];
    //每个颜色站的范围,
    layer.locations = @[@(0.01),@(0.1),@(0.9),@(0.99)];
    //坐标轴类似0.0原点1,1右下角
    layer.startPoint = CGPointMake(0, 0);
    layer.endPoint = CGPointMake(1, 0);
    _frontLabel.layer.mask = layer;
    _frontLabel.layer.borderWidth = 1;
    
}

//动画的时候覆盖layer开始平移向右,移开之后就显示了下面的颜色
- (void)fadeRightWithDuration:(NSTimeInterval)duration
{
    CABasicAnimation *basicAnimation = [CABasicAnimation animation];
    basicAnimation.keyPath = @"transform.translation.x";
    basicAnimation.fromValue = @(0);                    //起始
    basicAnimation.toValue = @(self.bounds.size.width); //控件的宽度
    basicAnimation.duration = duration;         //时间
    basicAnimation.repeatCount = LONG_MAX;      //无限重复
    basicAnimation.removedOnCompletion = NO;    //完成之后不移除
    basicAnimation.fillMode = kCAFillModeForwards;
    [_frontLabel.layer.mask addAnimation:basicAnimation forKey:nil];
}

动画2

- (void)createMask
{
    CAGradientLayer *layer = [CAGradientLayer layer];
    //设置大小
    layer.frame = self.bounds;
    //设置颜色组
    layer.colors = @[(id)[UIColor clearColor].CGColor,(id)[UIColor redColor].CGColor,(id)[UIColor clearColor].CGColor];
    //设置范围
    layer.locations = @[@(0.25),@(0.5),@(0.75)];
    //重左到右
    layer.startPoint = CGPointMake(0, 0);
    layer.endPoint = CGPointMake(1, 0);
    //添加遮盖
    _frontLabel.layer.mask = layer;
    //设置边框
    _frontLabel.layer.borderWidth = 1;
    _frontLabel.layer.backgroundColor = [UIColor blueColor].CGColor;
    
    //把遮罩向左偏移,让他能够重最左边开始
    layer.position = CGPointMake(-self.bounds.size.width/4.0, self.bounds.size.height/2.0);
    
}

- (void)iPhoneFadeWithDuration:(NSTimeInterval)duration
{
    CABasicAnimation *basicAnimation = [CABasicAnimation animation];
    basicAnimation.keyPath = @"transform.translation.x";
    basicAnimation.fromValue = @(0);
    basicAnimation.toValue = @(self.bounds.size.width+self.bounds.size.width/2.0);
    basicAnimation.duration = duration;
    basicAnimation.repeatCount = LONG_MAX;
    basicAnimation.removedOnCompletion = NO;
    basicAnimation.fillMode = kCAFillModeForwards;
    [_frontLabel.layer.mask addAnimation:basicAnimation forKey:nil];
}

下载链接

http://code.cocoachina.com/view/127174

相关文章

网友评论

    本文标题:iOS渐变的文字

    本文链接:https://www.haomeiwen.com/subject/jqlclttx.html