CALayer基础
来源:互联网 发布:足彩平局分析软件 编辑:程序博客网 时间:2024/05/22 11:57
先看效果
再看代码
代码下载请猛戳这里
测试一下几种控件中的layer
/** * UIView 图层测试 * * @param view 测试图层的UIView */- (void)testViewLayer:(UIView *)view{ //圆角 view.layer.cornerRadius = view.frame.size.height/2; //阴影颜色 view.layer.shadowColor = [UIColor blackColor].CGColor; //阴影偏移 view.layer.shadowOffset = CGSizeMake(2, 5); //阴影透明度 view.layer.shadowOpacity = 0.5;}/** * UIImageView 图层测试 * * @param view 测试图层的UIImageView */- (void)testImageViewLayer:(UIView *)view{ //描边 view.layer.borderColor = [UIColor redColor].CGColor; //描边宽 view.layer.borderWidth = 10; //圆角 view.layer.cornerRadius = view.frame.size.height/2; //裁剪 view.layer.masksToBounds = YES; //阴影设置 view.layer.shadowOpacity = 0.5; view.layer.shadowOffset = CGSizeMake(2, 6); view.layer.shadowColor = [UIColor blackColor].CGColor; //阴影大小 view.layer.shadowRadius = 10;}/** * UILabel 图层测试 * * @param view 测试图层的UILable */- (void)testLabelLayer:(UIView *)view{ //三维旋转 view.layer.transform = CATransform3DRotate(view.layer.transform, M_PI_4, 0, 0, 1); //三维缩放 CATransform3D transform = CATransform3DScale(view.layer.transform, 0.5, 0.5, 0.5); // 可以传递哪些key path, 在官方文档搜索 "CATransform3D key paths" [view.layer setValue:[NSValue valueWithCATransform3D:transform] forKeyPath:@"transform"]; /* 用KVC设置 */ [view.layer setValue:@(M_PI/3) forKeyPath:@"transform.rotation.x"]; [view.layer setValue:@(M_PI/3) forKeyPath:@"transform.rotation.y"]; [view.layer setValue:@(M_PI/3) forKeyPath:@"transform.rotation.z"]; [view.layer setValue:@(M_PI/3) forKeyPath:@"transform.rotation"]; [view.layer setValue:@(1.5) forKeyPath:@"transform.scale.x"]; [view.layer setValue:@(1.5) forKeyPath:@"transform.scale.y"]; [view.layer setValue:@(1.5) forKeyPath:@"transform.scale.z"]; [view.layer setValue:@(1.5) forKeyPath:@"transform.scale"];}
CALayer隐式动画
- (void)viewDidLoad { [super viewDidLoad]; //创建图层 CALayer *layer = [CALayer layer]; //设置位置 layer.frame = CGRectMake(0, 0, 100, 100); //设置背景色 layer.backgroundColor = [UIColor redColor].CGColor; //设置位置点 layer.position = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2); //设置锚点(注意:取值在0~1之间) layer.anchorPoint = CGPointMake(0.5, 0.5); //设置描边颜色 layer.borderColor = [UIColor greenColor].CGColor; //描边宽 layer.borderWidth = 5; //圆角大小 layer.cornerRadius = 50; //阴影不透明度 layer.shadowOpacity = 1; //阴影偏移 layer.shadowOffset = CGSizeMake(2, 5); //阴影大小 layer.shadowRadius = 5; //添加到父图层 [self.view.layer addSublayer:layer]; self.layer = layer;}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //通过在官方文档中搜索CALayer animatable Properties查看哪些属性可以做隐式动画 //self.layer.borderWidth = 15; //如何停止隐式动画 //1.开启事务 [CATransaction begin]; //2.设置不执行动画的属性 [CATransaction setDisableActions:YES]; //3.把动画属性放在中间 self.layer.opacity = 0; self.layer.borderWidth = 15; //4.提交事务 [CATransaction commit];}
自定义CALayer
/* view的完整显示过程 1. view.layer会准备一个Layer Graphics Contex(图层类型的上下文) 2. 调用view.layer.delegate(view)的drawLayer:inContext:,并传入刚才准备好的上下文 3. view的drawLayer:inContext:方法内部又会调用view的drawRect:方法 4. view就可以在drawRect:方法中实现绘图代码, 所有东西最终都绘制到view.layer上面 5. 系统再将view.layer的内容拷贝到屏幕, 于是完成了view的显示*/- (void)viewDidLoad { [super viewDidLoad]; //创建图层 CALayer *layer = [CALayer layer]; //设置位置 layer.frame = CGRectMake(0, 0, 100, 100); //设置背景色 layer.backgroundColor = [UIColor redColor].CGColor; //设置位置点 layer.position = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2); //设置锚点(注意:取值在0~1之间) layer.anchorPoint = CGPointMake(0.5, 0.5); //设置描边颜色 layer.borderColor = [UIColor greenColor].CGColor; //描边宽 layer.borderWidth = 5; //圆角大小 layer.cornerRadius = 50; //阴影不透明度 layer.shadowOpacity = 1; //阴影偏移 layer.shadowOffset = CGSizeMake(2, 5); //阴影大小 layer.shadowRadius = 5; //添加到父图层 [self.view.layer addSublayer:layer]; self.layer = layer;}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //通过在官方文档中搜索CALayer animatable Properties查看哪些属性可以做隐式动画 //self.layer.borderWidth = 15; //如何停止隐式动画 //1.开启事务 [CATransaction begin]; //2.设置不执行动画的属性 [CATransaction setDisableActions:YES]; //3.把动画属性放在中间 self.layer.opacity = 0; self.layer.borderWidth = 15; //4.提交事务 [CATransaction commit];}
0 0
- CALayer 基础
- CALayer 基础
- CALayer基础
- CALayer 基本基础
- calayer基础学习
- CALayer基础运用
- CALayer基础动画
- CALayer
- CALayer
- CALayer
- CALayer
- CALayer
- CALayer
- CALayer
- CALayer
- CALayer
- CALayer
- CALayer
- WINDOWS下WAMP常用环境配置
- 线程池的基本使用
- C/C++中位运算杂谈
- 51Nod 1459 迷宫游戏
- linux 下安装opencv3.0在编译时出现的问题undefined reference to `parallel_pthreads_set_threads_num(int)'
- CALayer基础
- 用Canvas获取图像平均颜色
- 判断一个给定字符序列在可以由该序列字符组成的所有序列里按Lexical
- 学习Python (七)
- PHP基础知识
- 一个互联网+应用的创意
- 虚拟机下ubuntu gnome分辨率低的解决办法
- 安卓初学-让APP支持不同的屏幕(Supporting Different Screens)
- 分享一个安卓人脸识别的项目