CATransform3D的m34值动画
CATransform3D的m34值动画

效果

源码
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:@""];
self.layer = [CALayer layer];
self.layer.frame = CGRectMake(, , image.size.width / .f, image.size.height / .f);
self.layer.position = self.view.center;
self.layer.borderWidth = .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:.f delaySecs:.f];
[self.timer start];
} - (void)transformStateEvent { // 初始化3D变换,获取默认值
CATransform3D perspectiveTransform = CATransform3DIdentity; // 透视
perspectiveTransform.m34 = -1.0/500.0; // 位移
perspectiveTransform = CATransform3DTranslate(perspectiveTransform, , -, ); // 空间旋转
perspectiveTransform = CATransform3DRotate(perspectiveTransform, [Math radianFromDegree:], 0.75, , -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
细节

CATransform3D的m34值动画的更多相关文章
- CATransform3D的m34使用
CATransform3D的m34使用 效果图 源码 // // ViewController.m // StarWars // // Created by YouXianMing on 15/11/ ...
- CATransform3D中m34字段的取值含义
转载自:http://zhidao.baidu.com/link?url=OlVQoGOKIBmaXKgQisOLtzliTLPvreOOsRmny3yebA1Wb6-B3KtuKlRXmv0tO3y ...
- tweenMax+如何让数字由初始值动画到结束的值
html: <div class="wz1">0</div> css: .wz1{ width: 114px; height: 30px; position ...
- iOS动画 三维透视投影 m34
transform的结构如下:struct CATransform3D{ CGFloat m11, m12, m13, m14; CGFloat m21, m22, m23, m24; CGFl ...
- CATransform3D
本章介绍图层的几何组成部分,及他们之间的相互关,同时介绍如何变换矩阵可以产生复杂的视觉效果. 1.1 图层的坐标系 图层的坐标系在不同平台上面具有差异性.在iOS系统中,默认的坐标系统原点在图层的中心 ...
- 核心动画——Core Animation
一. CALayer (一). CALayer简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比方一个button.一个文本标签.一个文本输入框.一个图标等等.这些都是UIView ...
- iOS开发——UI进阶篇(十七)CALayer,核心动画基本使用
一.CALayer简介 1.CALayer在iOS中,文本输入框.一个图标等等,这些都是UIView你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个其实UIView之所以 ...
- 【原】iOS学习44之动画
1. 简单动画 1> UIImageView GIF 动画 GIF图的原理是:获取图片,存储在图片数组中,按照图片数组的顺序将图片以一定的速度播放 UIImageView *showGifima ...
- CGAffineTransform与CATransform3D
CGAffineTransform 1.CG的前缀告诉我们,CGAffineTransform类型属于Core Graphics框架,Core Graphics实际上是一个严格意义上的2D绘图API, ...
随机推荐
- jenkins远程连接linux配置测试
由于配置原因造成一下错误错误: jenkins.plugins.publish_over.BapPublisherException: Failed to connect session for co ...
- Dijkstra算法---HDU 2544 水题(模板)
/* 对于只会弗洛伊德的我,迪杰斯特拉有点不是很理解,后来发现这主要用于单源最短路,稍稍明白了点,不过还是很菜,这里只是用了邻接矩阵 套模板,对于邻接表暂时还,,,没做题,后续再更新.现将这题贴上,应 ...
- PHP会话——模拟购物车的功能
1.php默认是不开启会话的,要使用会话用两种方法:(1)使用session_start();显示的开启会话.(2)在php.ini中找到如下的一行:找到session.auto_start = 0, ...
- 三、redis系列之事务
1. 绪言 Redis也提供了事务机制,可以一次执行多个命令,本质是一组命令的集合.一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞.但Redis对事务的支持是部分支持 ...
- 正规表达式 转 NFA C++
今天来为大家分享一个编译原理中用正规表达式转NFA的小程序 正规表达式就是类似正则一样的式子,例如:(a|b)*abb,最后应该转化为: 大致的处理流程为: 例子中的表达式:(a|b)*abb,|和* ...
- C++运算符重载 模板友元 new delete ++ = +=
今天的重载是基于C++ 类模板的,如果需要非类模板的重载的朋友可以把类模板拿掉,同样可以参考,谢谢. 一.类模板中的友元重载 本人喜好类声明与类成员实现分开写的代码风格,如若您喜欢将类成员函数的实现写 ...
- [漏洞复现] CVE-2017-11882 通杀所有Office版本
此漏洞是由Office软件里面的 [公式编辑器] 造成的,由于编辑器进程没有对名称长度进行校验,导致缓冲区溢出,攻击者通过构造特殊的字符,可以实现任意代码执行. 举个例子,如果黑客利用这个漏洞,构造带 ...
- http远程调用原生get、post模板
一.get方法 package lq.httpclient.method; import java.io.BufferedReader; import java.io.IOException; imp ...
- [leetcode sort]57. Insert Interval
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
- golang实现base64编解码
golang中base64的编码和解码可以用内置库encoding/base64 package main import ( "encoding/base64" "fmt ...