iOS 视图颜色渐变详解
2016-04-26 11:58
363 查看
// 初始化一个试图 (方法一) UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 200, 30)]; view.backgroundColor = [UIColor greenColor]; [self.view addSubview:view]; CAGradientLayer *layer = [CAGradientLayer layer]; layer.frame = view.bounds; layer.colors = [NSArray arrayWithObjects:(id)[UIColor redColor].CGColor, (id)[UIColor yellowColor].CGColor, (id)[UIColor greenColor].CGColor,nil]; // 可以只填一中颜色 layer.startPoint = CGPointMake(0, 1); layer.endPoint = CGPointMake(1, 1); // 这里面数字范围改动在(0-1) [view.layer insertSublayer:layer atIndex:0]; // 添加到试图layer上
// 方法二 CGContextRef context = UIGraphicsGetCurrentContext(); UIGraphicsPushContext(context); CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGFloat locations[] = {0,1}; NSArray *colors = @[(id)[UIColor redColor].CGColor, (id)[UIColor yellowColor].CGColor, (id)[UIColor greenColor].CGColor]; CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef) colors, locations); CGColorSpaceRelease(colorSpace); CGPoint startPoint = (CGPoint){view.frame.size.width * 0, view.frame.size.height * 1}; CGPoint endPoint = (CGPoint){view.frame.size.width * 1, view.frame.size.height * 1}; CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0); CGGradientRelease(gradient); UIGraphicsPopContext();
// 方法三 CIFilter *ciFilter = [CIFilter filterWithName:@"CILinearGradient"]; CIVector *vector0 = [CIVector vectorWithX:view.frame.size.width * _Point0.x Y:view.frame.size.height * (1 - _Point0.y)]; CIVector *vector1 = [CIVector vectorWithX:view.frame.size.width * Point1.x Y:view.frame.size.height * (1 - Point1.y)]; [ciFilter setValue:vector0 forKey:@"Point0"]; [ciFilter setValue:vector1 forKey:@"Point1"]; [ciFilter setValue:[CIColor colorWithCGColor:_inputColor0.CGColor] forKey:@"inputColor0"]; [ciFilter setValue:[CIColor colorWithCGColor:_inputColor1.CGColor] forKey:@"inputColor1"]; CIImage *ciImage = ciFilter.outputImage; CIContext *con = [CIContext contextWithOptions:nil]; CGImageRef resultCGImage = [con createCGImage:ciImage fromRect:rect]; UIImage *resultUIImage = [UIImage imageWithCGImage:resultCGImage]; CGImageRelease(resultCGImage); [resultUIImage drawInRect:rect];
相关文章推荐
- 【转】IOS缓存机制详解
- iOS自带扫描和生成二维码
- 使用 Wax 修复 iOS 应用的线上 Bug
- iOS 将服务器下载下来的db文件和本地的db文件合并后保存
- iOS 使用学习笔记1
- 我的iOS工程结构
- IOS各类问题
- iOS 蓝牙开发流程
- iOS数字媒体开发浅析
- iOS数字媒体开发浅析
- iOS中多线程原理与runloop介绍
- 【iOS开发】---- SDWebImage支持webp格式的图片
- iOS 回收键盘时拦截其他点击方法解决办法
- iOS修改导航返回按钮内容和返回指定页
- nagios联系人邮箱错误导致nagios无法启动
- iOS之谓词详解
- 我常去逛的iOS干货文章、blog等
- git 本地临时分支命名
- iOS可执行文件瘦身方法
- iOS最佳实践