一:CALayer 的简单使用
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
// 1.CALayer 的简单使用
[self useCALayer];
}
- (void)useCALayer
{
UIImage *image = [UIImage imageNamed:@"11.png"];
// NSString *path = [[NSBundle mainBundle] pathForResource:@"11" ofType:@"png"];
// UIImage *image = [UIImage imageWithContentsOfFile:path];
UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 200, 300, 300)];
imageView.image = image;
[self.view addSubview:imageView];
// 1.设置圆角
// 让所有的图层跟随父图层改变
// [imageView.layer setMasksToBounds:YES];
// [imageView.layer setCornerRadius:150];
//
// 2. 设置边框
// 2.1 设置边框的宽度
// [imageView.layer setBorderWidth:2.0];
// // 2.2 设置边框的颜色
// [imageView.layer setBorderColor:[UIColor redColor].CGColor];
// 3.设置阴影效果(如果使用阴影效果,setMasksToBounds 不能设置成YES,必须同时指定颜色、偏移量、透明度)
// 3.1 设置阴影效果的偏移量
[imageView.layer setShadowOffset:CGSizeMake(10, 10)];
// 3.2 设置阴影效果的颜色
[imageView.layer setShadowColor:[UIColor yellowColor].CGColor];
// 3.3 设置阴影效果的透明度
[imageView.layer setShadowOpacity:1.0];
}
11.png
二:自定义CALayer
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
// 2.自定义CALayer
[self diyCALayer];
}
- (void)diyCALayer
{
// 1. 获取一个图层对象
_layer = [CALayer layer];
// 2. 设置图层的属性
_layer.frame = CGRectMake(0, 0, 300, 300);
// 2.1 大小
// _layer.bounds = CGRectMake(300, 300, 300, 300);
// 2.2 位置
// _layer.position = CGPointMake(0, 0);
// 2.3 设置颜色
_layer.backgroundColor = [UIColor purpleColor].CGColor;
// 2.4 设置锚点(大小 :0~ 1) 默认的是0.5
// layer.anchorPoint = CGPointMake(0.5, 0.5);
// 2.5 设置图片
UIImage *image = [UIImage imageNamed:@"11"];
_layer.contents = (id)[image CGImage];
// 3. 把自定义图层添加到父图层
[self.view.layer addSublayer:_layer];
}
自定义CALayer.png
代理绘制图层
- (void)viewDidLoad {
// 3.代理绘制图层
// [self drawLayerWithDelegate];
}
- (void)drawLayerWithDelegate
{
// 1. 创建一个Layer
CALayer *layer = [CALayer layer];
layer.frame = CGRectMake(0, 0, 300, 300);
layer.delegate = self;
[self.view.layer addSublayer:layer];
// 3. 触发代理方法 setNeedsDisplay:重新绘制当前图层的视图
[layer setNeedsDisplay];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if (_layer.anchorPoint.x == 0.5) {
_layer.anchorPoint = CGPointMake(1.0, 1.0);
}else
{
_layer.anchorPoint = CGPointMake(0.5, 0.5);
}
}
// 2. 实现代理方法
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
// 2.1设置绘制大小
CGRect frame = CGRectMake(20, 20, 100, 100);
// 2.2 添加路径
CGContextAddRect(ctx, frame);
// 2.3 设置属性
CGContextSetRGBFillColor(ctx, 1.0, 0.0, 0.0, 1.0);
// 2.4 绘制
CGContextDrawPath(ctx, kCGPathFillStroke);
}
自定义CALayer.png
理绘制图层
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
// 3.代理绘制图层
[self drawLayerWithDelegate];
}
// 2. 实现代理方法
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
// 2.1设置绘制大小
CGRect frame = CGRectMake(20, 20, 100, 100);
// 2.2 添加路径
CGContextAddRect(ctx, frame);
// 2.3 设置属性
CGContextSetRGBFillColor(ctx, 1.0, 0.0, 0.0, 1.0);
// 2.4 绘制
CGContextDrawPath(ctx, kCGPathFillStroke);
}
代理绘制图层.png
动画属性
#import "ViewController.h"
@interface ViewController ()
{
CALayer *_layer;
NSArray *_array;
}
@end
#动画属性
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 1. 定义一个图层
_layer = [CALayer layer];
_layer.frame = CGRectMake(0, 0, 200, 200);
_layer.backgroundColor = [UIColor orangeColor].CGColor;
[self.view.layer addSublayer:_layer];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = touches.anyObject;
CGPoint point = [touch locationInView:self.view];
// 设置layer随着手指点击的位置移动
// 设置位置
_layer.position = point;
// 设置颜和透明度
_layer.backgroundColor = [UIColor colorWithRed:arc4random() % 255 / 255.f green:arc4random() % 255 / 255.f blue:arc4random() % 255 / 255.f alpha:arc4random() % 255 / 255.f + 0.4].CGColor;
// 设置旋转
CGFloat angle = arc4random() % 180 / M_PI * 180;
_layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1);
// 设置圆角
_layer.cornerRadius = arc4random() % 200;
}
@end
动画属性.png
网友评论