因项目中用到渐变的UI,找了一圈,有好几种方法来实现,最简单的做法就是让UI切图,省事。但是UI不好找,那只能自己搞咯。我这里用了masonry布局的,因此用延时来取到frame值,带到渐变设置的layer,对应赋值,最后添加到对应view的layer就ok了。其实还有几种方式可以实现,但万变不离其宗,想玩可以自己去试试其他方法...
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[[self class] setGradientView:process fromColor:[UIColor colorWithHexString:@"#1C78FF"] toColor:[UIColor colorWithHexString:@"#17B3FF"]];
});
+ (void)setGradientView:(UIView *)view fromColor:(UIColor *)fromColor toColor:(UIColor *)toColor {
//gradient设置渐变色进度条
CAGradientLayer *gl = [CAGradientLayer layer];
gl.frame = CGRectMake(0, 0, view.size.width, view.size.height);
gl.startPoint = CGPointMake(0, 0.5);
gl.endPoint = CGPointMake(1, 0.5);
gl.colors = @[(__bridge id)fromColor.CGColor, (__bridge id)toColor.CGColor];
gl.locations = @[@(0), @(1.0f)];
[view.layer addSublayer:gl];
}
网友评论