看图看代码: !(https://static.oschina.net/uploads/img/201703/27113620_8hjF.jpg ) !(https://static.oschina.net/uploads/img/201703/27113637_MQOi.jpg ) !(https://static.oschina.net/uploads/img/201703/27113500_J1Ty.jpg ) UILabel *textLabel = [[UILabel alloc] initWithFrame:_regiset.frame]; textLabel.text = @"滑动解锁屏幕"; textLabel.font = [UIFont systemFontOfSize:20]; textLabel.textAlignment = NSTextAlignmentCenter; textLabel.textColor = [UIColor whiteColor]; CAGradientLayer *graLayer = [CAGradientLayer layer]; graLayer.frame = textLabel.bounds; graLayer.colors = @[(__bridge id)[[UIColor greenColor] colorWithAlphaComponent:0.9].CGColor, (__bridge id)[UIColor blackColor].CGColor, (__bridge id)[[UIColor grayColor] colorWithAlphaComponent:0.3].CGColor];
graLayer.startPoint = CGPointMake(0, 0);//设置渐变方向起点
graLayer.endPoint = CGPointMake(1, 0); //设置渐变方向终点
graLayer.locations = @[@(0.0), @(0.0), @(0.1)]; //colors中各颜色对应的初始渐变点
// 通过设置颜色渐变点(locations)动画,达到预期效果
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"locations"];
animation.duration = 2.0f;
animation.toValue = @[@(0.9), @(1.0), @(1.0)];
animation.removedOnCompletion = NO;
animation.repeatCount = HUGE_VALF;
animation.fillMode = kCAFillModeForwards;
[graLayer addAnimation:animation forKey:@"dongtaiziti"];
// 关键的一步,将graLayer设置成textLabel的遮罩
textLabel.layer.mask = grayer;
PS:如果想加点击事件的话,可以尝试一下Button,不过我自己偷个懒,直接在UIlabel上加个Button。