参考文章 http://blog.youkuaiyun.com/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. 类型
- @property(copy) NSString *type
即线性梯度变化
2. 颜色
- @property(copy) NSArray *colors
3. 位置参数
- @property(copy) NSArray *locations
修改例子6.6,增加
- <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>
- gradientLayer.locations = @[[NSNumber numberWithFloat:0.5], [NSNumber numberWithFloat:0.7]];
4. startPoint和endPoint
- @property CGPoint startPoint, endPoint;
取值都是相对于layer的bounds的。startPoint默认值为(0.5, 0),endPoint默认值为(0.5, 1)
gradientLayer.startPoint 分别设为 CGPointMake(0, 0);
CGPointMake(
0.25,
0);
CGPointMake(
0.5,
0);
CGPointMake(
0.75,
0);
CGPointMake(1,
0);
综合修改例子6.6
- - (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线段的。
在网上找的描述让我很是不能理解