iOS CAGradientLayer 详解
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
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
修改例子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>
[objc] view plain copy
1. 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
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. }
从以上可以看出startPoint和endPoint诗表示的渐变方向,locations是渐变区域。
也可以看出locations的取值是相对于startPoint和endPoint线段的。
在网上找的描述让我很是不能理解
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |