动画展示

be4d76e38e8c

在上篇博文中 使用CAGradientLayer实现背景颜色渐变和特效 有朋友问UISlider底部滑动条怎么弄渐变色。刚写了个Demo,由于回复区贴代码不好看所以专门放上博客中一起看看吧。

代码实现

- (void)viewDidLoad {

[super viewDidLoad];

self.slider = [[UISlider alloc]initWithFrame:CGRectMake(100, 100, 200, 55)];

[self.view addSubview:self.slider];

UIColor *startColor = [UIColor colorWithRed:190.0/255 green:253.0/255 blue:255.0/255 alpha:1.0];

UIColor *endColor = [UIColor colorWithRed:0.0/255 green:222.0/255 blue:255.0/255 alpha:1.0];

NSArray *colors = @[startColor,endColor];

UIImage *img = [self getGradientImageWithColors:colors imgSize:self.slider.bounds.size];

[self.slider setMinimumTrackImage:img forState:UIControlStateNormal];

}

-(UIImage *)getGradientImageWithColors:(NSArray*)colors imgSize:(CGSize)imgSize

{

NSMutableArray *arRef = [NSMutableArray array];

for(UIColor *ref in colors) {

[arRef addObject:(id)ref.CGColor];

}

UIGraphicsBeginImageContextWithOptions(imgSize, YES, 1);

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSaveGState(context);

CGColorSpaceRef colorSpace = CGColorGetColorSpace([[colors lastObject] CGColor]);

CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)arRef, NULL);

CGPoint start = CGPointMake(0.0, 0.0);

CGPoint end = CGPointMake(imgSize.width, imgSize.height);

CGContextDrawLinearGradient(context, gradient, start, end, kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

CGGradientRelease(gradient);

CGContextRestoreGState(context);

CGColorSpaceRelease(colorSpace);

UIGraphicsEndImageContext();

return image;

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐