iOS CAGradientLayer 详解
2016-02-03 11:06
731 查看
参考文章 http://blog.csdn.net/iunion/article/details/26221213
CAGradientLayer
产生平滑过渡色
CAGradientLayer的属性设置
1. 类型
[objc] view
plain copy
print?
@property(copy) NSString *type
目前只有NSString * const kCAGradientLayerAxial
即线性梯度变化
2. 颜色
[objc] view
plain copy
print?
@property(copy) NSArray *colors
3. 位置参数
[objc] view
plain copy
print?
@property(copy) NSArray *locations
颜色的区间分布,locations的数组长度和colors一致, 取值范围(0, 1),而且必须是单调递增的
修改例子6.6,增加
[objc] view
plain copy
print?
<p class="p1"> gradientLayer.<span class="s1">locations</span> = <span class="s2">@[</span>[<span class="s1">NSNumber</span> <span class="s3">numberWithFloat</span>:<span class="s2">0.0</span>], [<span class="s1">NSNumber</span> <span class="s3">numberWithFloat</span>:<span class="s2">0.2</span>]<span class="s2">]</span>;</p>
[objc] view
plain copy
print?
gradientLayer.locations = @[[NSNumber numberWithFloat:0.5], [NSNumber numberWithFloat:0.7]];
4. startPoint和endPoint
[objc] view
plain copy
print?
@property CGPoint startPoint, endPoint;
取值都是相对于layer的bounds的。startPoint默认值为(0.5, 0),endPoint默认值为(0.5, 1)
修改例子6.6
gradientLayer.startPoint 分别设为 CGPointMake(0, 0);
CGPointMake(0.25, 0);
CGPointMake(0.5, 0);
CGPointMake(0.75, 0);
CGPointMake(1, 0);
综合修改例子6.6
[objc] view
plain copy
print?
- (void)viewDidLoad
{
[super viewDidLoad];
//create gradient layer and add it to our container view
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = self.containerView.bounds;
[self.containerView.layer addSublayer:gradientLayer];
//set gradient colors
gradientLayer.colors = @[(__bridge id)[UIColor redColor].CGColor,
(__bridge id)[UIColor blueColor].CGColor];
gradientLayer.locations = @[[NSNumber numberWithFloat:0.5], [NSNumber numberWithFloat:0.7]];
//set gradient start and end points
gradientLayer.startPoint = CGPointMake(0.75, 0.0);
gradientLayer.endPoint = CGPointMake(1.0, 1.0);
}
从以上可以看出startPoint和endPoint诗表示的渐变方向,locations是渐变区域。
也可以看出locations的取值是相对于startPoint和endPoint线段的。
在网上找的描述让我很是不能理解
CAGradientLayer
产生平滑过渡色
// // ViewController.m // test_gradient_01 // // Created by admin on 2/3/16. // Copyright © 2016 jeffasd. All rights reserved. // #import "ViewController.h" @interface ViewController () @property(nonatomic, strong)UIView *contentView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _contentView = [UIView new]; _contentView.frame = CGRectMake(100, 100, 100, 100); _contentView.backgroundColor = [UIColor redColor]; [self.view addSubview:_contentView]; CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.frame = self.contentView.bounds; [self.contentView.layer addSublayer:gradientLayer]; // gradientLayer.colors = (__bridge NSArray * _Nullable)([UIColor blueColor].CGColor); // gradientLayer.colors = (__bridge NSArray * _Nullable)([UIColor cyanColor].CGColor); //渐变区域 gradientLayer.locations = @[[NSNumber numberWithFloat:0.3], [NSNumber numberWithFloat:0.8]]; gradientLayer.colors = @[(__bridge NSArray * _Nullable)([UIColor blueColor].CGColor), (__bridge NSArray * _Nullable)([UIColor redColor].CGColor)]; // gradientLayer.startPoint = CGPointMake(0, 0); //最大值为 (1, 1),最小值为(0, 0) gradientLayer.startPoint = CGPointMake(1, 0); gradientLayer.endPoint = CGPointMake(1, 1); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
CAGradientLayer的属性设置
1. 类型
[objc] view
plain copy
print?
@property(copy) NSString *type
目前只有NSString * const kCAGradientLayerAxial
即线性梯度变化
2. 颜色
[objc] view
plain copy
print?
@property(copy) NSArray *colors
3. 位置参数
[objc] view
plain copy
print?
@property(copy) NSArray *locations
颜色的区间分布,locations的数组长度和colors一致, 取值范围(0, 1),而且必须是单调递增的
修改例子6.6,增加
[objc] view
plain copy
print?
<p class="p1"> gradientLayer.<span class="s1">locations</span> = <span class="s2">@[</span>[<span class="s1">NSNumber</span> <span class="s3">numberWithFloat</span>:<span class="s2">0.0</span>], [<span class="s1">NSNumber</span> <span class="s3">numberWithFloat</span>:<span class="s2">0.2</span>]<span class="s2">]</span>;</p>
[objc] view
plain copy
print?
gradientLayer.locations = @[[NSNumber numberWithFloat:0.5], [NSNumber numberWithFloat:0.7]];
4. startPoint和endPoint
[objc] view
plain copy
print?
@property CGPoint startPoint, endPoint;
取值都是相对于layer的bounds的。startPoint默认值为(0.5, 0),endPoint默认值为(0.5, 1)
修改例子6.6
gradientLayer.startPoint 分别设为 CGPointMake(0, 0);
CGPointMake(0.25, 0);
CGPointMake(0.5, 0);
CGPointMake(0.75, 0);
CGPointMake(1, 0);
综合修改例子6.6
[objc] view
plain copy
print?
- (void)viewDidLoad
{
[super viewDidLoad];
//create gradient layer and add it to our container view
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = self.containerView.bounds;
[self.containerView.layer addSublayer:gradientLayer];
//set gradient colors
gradientLayer.colors = @[(__bridge id)[UIColor redColor].CGColor,
(__bridge id)[UIColor blueColor].CGColor];
gradientLayer.locations = @[[NSNumber numberWithFloat:0.5], [NSNumber numberWithFloat:0.7]];
//set gradient start and end points
gradientLayer.startPoint = CGPointMake(0.75, 0.0);
gradientLayer.endPoint = CGPointMake(1.0, 1.0);
}
从以上可以看出startPoint和endPoint诗表示的渐变方向,locations是渐变区域。
也可以看出locations的取值是相对于startPoint和endPoint线段的。
在网上找的描述让我很是不能理解
相关文章推荐
- iOS端项目注释规范附统一代码块
- 在iOS中使用手指简单画线
- IOS视频压缩
- iOS安全:反汇编(inline编译方式)
- 适配低版本和高版本系统的API(转载)
- iOS 活动图 流程图
- iOS推送证书生成
- 如何设计一个 iOS 控件?(iOS 控件完全解析)
- iOS常用封装方法
- How to Disable System Integrity Protection
- IOS博客项目搭建-06-自定义TabBarButton-03
- iOS 【CocoaPods 全攻略】
- iOS bitcode实战
- 【iOS开发】关于awakeFromNib的使用
- IOS9通用链接使用要点
- iOS文字排版(CoreText)那些事儿
- iOS终于知道为什么有时候打开相机是黑屏了
- 蓝懿IOS实战音乐播放器
- 最简单的ListView
- iOS:详解MJRefresh刷新加载更多数据的第三方库