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








iOS CAGradientLayer 详解_最小值





CAGradientLayer的属性设置


1. 类型


[objc]  view plain  copy

 print ?

  1. @property(copy) NSString *type  

目前只有NSString * const kCAGradientLayerAxial

即线性梯度变化



2. 颜色


[objc]  view plain  copy

 print ?

  1. @property(copy) NSArray *colors  


3. 位置参数

[objc]  view plain  copy

 print ?

  1. @property(copy) NSArray *locations  




修改例子6.6,增加


[objc]  view plain  copy

print      ?                
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>


iOS CAGradientLayer 详解_最小值_02


[objc]  view plain  copy


1. gradientLayer.locations = @[[NSNumber numberWithFloat:0.5], [NSNumber numberWithFloat:0.7]];

  


iOS CAGradientLayer 详解_默认值_03





4. startPoint和endPoint


[objc]  view plain  copy

 print ?

  1. @property CGPoint startPoint, endPoint;  


取值都是相对于layer的bounds的。startPoint默认值为(0.5, 0),endPoint默认值为(0.5, 1)


修改例子6.6

gradientLayer.startPoint 分别设为 CGPointMake(0, 0); 


iOS CAGradientLayer 详解_最小值_04




CGPointMake( 0.25,  0); 


iOS CAGradientLayer 详解_取值_05




CGPointMake( 0.5,  0); 


iOS CAGradientLayer 详解_取值_06




CGPointMake( 0.75,  0); 


iOS CAGradientLayer 详解_最小值_07




CGPointMake(1,  0); 


iOS CAGradientLayer 详解_取值_08





综合修改例子6.6


[objc]  view plain  copy


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. .frame = self.containerView.bounds;  
8. self.containerView.layer addSublayer:gradientLayer];  
9.       
10. //set gradient colors  
11. .colors = @[(__bridge id)[UIColor redColor].CGColor,  
12. id)[UIColor blueColor].CGColor];  
13.       
14. .locations = @[[NSNumber numberWithFloat:0.5], [NSNumber numberWithFloat:0.7]];  
15.   
16. //set gradient start and end points  
17. .startPoint = CGPointMake(0.75, 0.0);  
18. .endPoint = CGPointMake(1.0, 1.0);  
19. }


iOS CAGradientLayer 详解_默认值_09





从以上可以看出startPoint和endPoint诗表示的渐变方向,locations是渐变区域。


也可以看出locations的取值是相对于startPoint和endPoint线段的。



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



iOS CAGradientLayer 详解_默认值_10




阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6