CATransform3D的m34值动画
2016-01-09 22:17
302 查看
CATransform3D的m34值动画
效果
源码
https://github.com/YouXianMing/Animations
细节
效果
源码
https://github.com/YouXianMing/Animations
// // CATransform3DM34Controller.m // Animations // // Created by YouXianMing on 16/1/9. // Copyright © 2016年 YouXianMing. All rights reserved. // #import "CATransform3DM34Controller.h" #import "GCD.h" #import "Math.h" @interface CATransform3DM34Controller () @property (nonatomic, strong) CALayer *layer; @property (nonatomic, strong) GCDTimer *timer; @property (nonatomic) BOOL transformState; @end @implementation CATransform3DM34Controller - (void)setup { [super setup]; [self initLayer]; [self timerEvent]; } - (void)initLayer { // Init layer. UIImage *image = [UIImage imageNamed:@"1"]; self.layer = [CALayer layer]; self.layer.frame = CGRectMake(0, 0, image.size.width / 2.f, image.size.height / 2.f); self.layer.position = self.view.center; self.layer.borderWidth = 4.f; self.layer.borderColor = [UIColor blackColor].CGColor; self.layer.contents = (__bridge id)image.CGImage; [self.view.layer addSublayer:self.layer]; } - (void)timerEvent { // Timer event. self.timer = [[GCDTimer alloc] initInQueue:[GCDQueue mainQueue]]; [self.timer event:^{ if (self.transformState == NO) { self.transformState = YES; [self transformStateEvent]; } else { self.transformState = NO; [self normalStateEvent]; } } timeIntervalWithSecs:3.f delaySecs:3.f]; [self.timer start]; } - (void)transformStateEvent { // 初始化3D变换,获取默认值 CATransform3D perspectiveTransform = CATransform3DIdentity; // 透视 perspectiveTransform.m34 = -1.0/500.0; // 位移 perspectiveTransform = CATransform3DTranslate(perspectiveTransform, 30, -35, 0); // 空间旋转 perspectiveTransform = CATransform3DRotate(perspectiveTransform, [Math radianFromDegree:30], 0.75, 1, -0.5); // 缩放变换 perspectiveTransform = CATransform3DScale(perspectiveTransform, 0.75, 0.75, 0.75); self.layer.transform = perspectiveTransform; self.layer.speed = 0.5; } - (void)normalStateEvent { // 初始化3D变换,获取默认值 CATransform3D perspectiveTransform = CATransform3DIdentity; self.layer.transform = perspectiveTransform; self.layer.speed = 0.5; } @end
细节
相关文章推荐
- DRUID连接池的简单使用
- java构造函数是否可继承,以及子类构造函数可否不使用super调用超类构造函数
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog(LIS)
- swift入门———数组
- atitit.极光消息推送服务器端开发实现推送 jpush v3. 总结o7p
- Angular数据双向绑定
- 服了这个所谓北大青鸟官方学员社区论坛
- 概率算法
- 算法基础训练(二)
- Python多进程编程
- Spark Streaming:TCP(基本类型)数据源
- 数据结构学习笔记——顺序表和链表的比较
- excel中画坐标轴的备用知识
- 快播案乐视被网友吊打 贾跃亭微博喊冤
- 到底应不应该上培训班
- hdu 2066 一个人的旅行(加超级源点)
- Android View重绘和更新: invalidate和requestLayout
- SVN更新至最新开发版
- 在C#中连接SQL数据库
- Atitit.文件搜索工具 attilax 总结