iOS CAGradientLayer 详解

来源:互联网 发布:田岛绣花软件9.0 编辑:程序博客网 时间:2024/06/05 03:57
参考文章 http://blog.csdn.net/iunion/article/details/26221213
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?在CODE上查看代码片派生到我的代码片
  1. @property(copyNSString *type  
目前只有NSString * const kCAGradientLayerAxial
即线性梯度变化

2. 颜色
[objc] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. @property(copyNSArray *colors  

3. 位置参数
[objc] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. @property(copyNSArray *locations  
颜色的区间分布,locations的数组长度和colors一致, 取值范围(0, 1),而且必须是单调递增的


修改例子6.6,增加
[objc] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. <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?在CODE上查看代码片派生到我的代码片
  1. gradientLayer.locations = @[[NSNumber numberWithFloat:0.5], [NSNumber numberWithFloat:0.7]];  


4. startPoint和endPoint
[objc] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. @property CGPoint startPoint, endPoint;  
取值都是相对于layer的bounds的。startPoint默认值为(0.5, 0),endPoint默认值为(0.5, 1)

修改例子6.6

gradientLayer.startPoint 分别设为 CGPointMake(00); 



 CGPointMake(0.250); 


 CGPointMake(0.50); 


 CGPointMake(0.750); 


 CGPointMake(1, 0); 



综合修改例子6.6
[objc] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.       
  5.     //create gradient layer and add it to our container view  
  6.     CAGradientLayer *gradientLayer = [CAGradientLayer layer];  
  7.     gradientLayer.frame = self.containerView.bounds;  
  8.     [self.containerView.layer addSublayer:gradientLayer];  
  9.       
  10.     //set gradient colors  
  11.     gradientLayer.colors = @[(__bridge id)[UIColor redColor].CGColor,  
  12.                              (__bridge id)[UIColor blueColor].CGColor];  
  13.       
  14.     gradientLayer.locations = @[[NSNumber numberWithFloat:0.5], [NSNumber numberWithFloat:0.7]];  
  15.   
  16.     //set gradient start and end points  
  17.     gradientLayer.startPoint = CGPointMake(0.750.0);  
  18.     gradientLayer.endPoint = CGPointMake(1.01.0);  
  19. }  



从以上可以看出startPoint和endPoint诗表示的渐变方向,locations是渐变区域。
也可以看出locations的取值是相对于startPoint和endPoint线段的。

在网上找的描述让我很是不能理解




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 空调外机不好放怎么办 美的空调显示e3怎么办 发现安装空调条码被撕怎么办 删除了国美安装码怎么办 海信空调保修卡丢了怎么办 海尔空调保修卡丢了怎么办 科龙空调不制冷怎么办 魅族s6屏幕碎了怎么办 格力空调化霜怎么办 一开空调就跳闸怎么办 洗衣机顶盖的安全开关损坏怎么办 苹果平板电脑拍照坏了怎么办 苹果hom键不灵了怎么办 平板电脑home键发烫怎么办 华为平板无法输入资料怎么办 安卓平板没声音怎么办? 平果手机充不了电怎么办 苹果6s用电太快怎么办 平板充不起电了怎么办 日本买的电器国内售后怎么办 海淘地址试投不成功怎么办 怀孕了吐得厉害怎么办 玩网页游戏好卡怎么办 网页游戏占cpu高怎么办 微信有余额绑定其他名下怎么办 银行卡绑定支付余额不对怎么办 可乐机不制冷了怎么办 被淘宝卖家威胁怎么办 征信不好想贷款怎么办 急用钱征信不好怎么办 急用钱逾期不还怎么办 急用钱借款不还怎么办 做b超按压疼痛怎么办 做b超没有尿怎么办 b超憋不到尿怎么办 做b超前没有尿意怎么办 肝胆b超前喝水了怎么办 肝胆彩超喝水了怎么办 胆囊b超喝了水怎么办 系统b超照不到怎么办 思维彩超宝宝不动怎么办