iOS开发总结之图层CALayer
来源:互联网 发布:影像混搭软件 编辑:程序博客网 时间:2024/06/07 00:09
1.代码
#import "ViewController.h"#import <QuartzCore/QuartzCore.h>@interface ViewController ()@property (weak, nonatomic) IBOutlet UIView *purpleView;@property (weak, nonatomic) IBOutlet UIImageView *iconView;@end@implementation MJViewController- (void)viewDidLoad{ [super viewDidLoad]; [self testView];}- (void)testImageView2{ //普通的view只有二维动画 而图层可以做三维动画 self.iconView.layer.transform = CATransform3DMakeScale(1.5, 0.5, 0); self.iconView.transform = CGAffineTransformMakeRotation(M_PI_4); self.iconView.layer.transform = CATransform3DMakeRotation(M_PI_4, 0, 0, 1); //下面的两行代码用kvc可以实现上面那行代码相同的效果 NSValue *value = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 0, 0, 1)]; [self.iconView.layer setValue:value forKeyPath:@"transform"]; [self.iconView.layer setValue:@(M_PI_2) forKeyPath:@"transform.rotation"];//二维平面的旋转 self.iconView.layer.transform = CATransform3DMakeScale(0.5, 2, 0); [self.iconView.layer setValue:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0.5, 2, 0)] forKeyPath:@"transform"]; [self.iconView.layer setValue:@(0.5) forKeyPath:@"transform.scale.y"];//y方向上缩小0.5倍 // 可以传递哪些key path, 在官方文档搜索 "CATransform3D key paths" [self.iconView.layer setValue:@(-100) forKeyPath:@"transform.translation.x"];}- (void)testImageView{ // 边框宽度// self.iconView.layer.borderWidth = 10;// // 边框颜色// self.iconView.layer.borderColor = [UIColor greenColor].CGColor; // 圆角 self.iconView.layer.cornerRadius = 10; // 超出主层边框范围的内容都剪掉 self.iconView.layer.masksToBounds = YES; // 阴影颜色 self.iconView.layer.shadowColor = [UIColor blueColor].CGColor; // 阴影偏差 self.iconView.layer.shadowOffset = CGSizeMake(20, 20); // 阴影不透明度 self.iconView.layer.shadowOpacity = 0.5;}- (void)testView{ // 边框宽度 self.purpleView.layer.borderWidth = 10; // // 边框颜色 self.purpleView.layer.borderColor = [UIColor greenColor].CGColor; // 圆角 self.purpleView.layer.cornerRadius = 10; // self.purpleView.layer.masksToBounds = YES; // 阴影颜色 self.purpleView.layer.shadowColor = [UIColor blueColor].CGColor; // 阴影偏差 self.purpleView.layer.shadowOffset = CGSizeMake(20, 20); // 阴影不透明度 self.purpleView.layer.shadowOpacity = 0.5;}@end
2.效果
storyboard中结构:
1⃣️代码- (void)testView运行的效果
2⃣️代码- (void)testImageView运行效果
3⃣️代码- (void)testImageView2运行效果
3.图层transform之CATransform3D key paths
官方文档搜索:
4.新建图层
- (void)viewDidLoad{ [super viewDidLoad]; // 新建图层// CALayer *layer = [[CALayer alloc] init]; CALayer *layer = [CALayer layer]; layer.backgroundColor = [UIColor redColor].CGColor; layer.bounds = CGRectMake(0, 0, 100, 100); layer.position = CGPointMake(200, 100); layer.cornerRadius = 10; layer.masksToBounds = YES; layer.contents = (id)[UIImage imageNamed:@"lufy"].CGImage; [self.view.layer addSublayer:layer];}效果:
5.隐式动画
锚点anchorPoint默认在中间
- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. CALayer *layer = [CALayer layer]; layer.bounds = CGRectMake(0, 0, 100, 100); layer.backgroundColor = [UIColor redColor].CGColor; layer.position = CGPointZero;// layer.anchorPoint = CGPointZero; [self.view.layer addSublayer:layer]; self.layer = layer;}
上面代码运行效果:
改变锚点位置
- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. CALayer *layer = [CALayer layer]; layer.bounds = CGRectMake(0, 0, 100, 100); layer.backgroundColor = [UIColor redColor].CGColor; layer.position = CGPointZero; layer.anchorPoint = CGPointZero; [self.view.layer addSublayer:layer]; self.layer = layer;}
效果:
隐式动画:没有明显告知开启动画也悄悄的开启动画
- (void)viewDidLoad{ [super viewDidLoad];// Do any additional setup after loading the view, typically from a nib. CALayer *layer = [CALayer layer]; layer.bounds = CGRectMake(0, 0, 100, 100); layer.backgroundColor = [UIColor redColor].CGColor; layer.position = CGPointZero; layer.anchorPoint = CGPointZero; [self.view.layer addSublayer:layer]; self.layer = layer;}- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{// self.layer.backgroundColor = [UIColor blueColor].CGColor;// [CATransaction begin]; // 开启事务// [CATransaction setDisableActions:YES]; // self.layer.position = CGPointMake(100, 100); self.layer.opacity = 0.5; // [CATransaction commit]; // 提交事务}点击屏幕前:
点击屏幕后:
0 0
- iOS开发总结之图层CALayer
- iOS开发 - CALayer图层
- iOS开发中的图层-CALayer-
- IOS 图层CALayer
- IOS开发之CALayer
- iOS开发UI篇—CAlayer(创建图层)
- iOS开发UI篇—CAlayer(创建图层)
- iOS开发UI高级—29CAlayer(创建图层)
- iOS开发UI篇——CAlayer(创建图层)
- iOS开发UI篇—CAlayer(创建图层)
- iOS开发UI篇—CAlayer(创建图层)
- iOS开发UI篇—CAlayer(创建图层)
- iOS开发UI篇—CAlayer(创建图层)
- iOS开发UI篇—CAlayer(创建图层)
- iOS开发UI篇—CAlayer(创建图层)
- iOS开发UI篇-CALayer创建图层
- iOS开发UI篇—CAlayer(创建图层)
- iOS CALayer视图图层
- Android学习之Activity生命周期文档翻译
- 初步了解Javascript 闭包
- OCiOS开发:发短信、发邮件、打电话及摇一摇实现
- 一定要把英语练好
- Java内存模型简单总结
- iOS开发总结之图层CALayer
- gulp入门和使用
- 关于linux进程间的close-on-exec机制
- 使用Py2exe将PyQt程序打包为exe文件
- ethernet和internet的定义
- Java native 本地方法调用
- C++第4次作业
- MySQL 命令大全
- 用py2exe打包成一个exe文件