关于CATransform3D矩阵变换的简单解析
关于CATransform3D矩阵变换的简单解析
效果图:
我能能够用上的CATransform3D其实很简单,并不复杂.
CATransform3D有着4种东西我们可以设置.
1. 透视效果(由m34的值决定)
2. 位移变换(主要是x,y方向)
3. 缩放变换
4. 空间旋转
源码:
- //
- // RootViewController.m
- //
- // Copyright (c) 2014年 Y.X. All rights reserved.
- //
- #import "RootViewController.h"
- #import "CATransform3DOperation.h"
- #import "YXGCD.h"
- @interface RootViewController ()
- @property (nonatomic, strong) GCDTimer *timer;
- @end
- // 将角度转换为弧度
- #define DEGREES_TO_RADIANS(d) ((d) * M_PI / 180.f)
- @implementation RootViewController
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- self.view.backgroundColor = [UIColor blackColor];
- // 给Layer一个图片内容
- UIImage *image = [UIImage imageNamed:@""];
- CALayer *layer = [CALayer layer];
- layer.frame = CGRectMake(, , image.size.width, image.size.height);
- layer.position = self.view.center;
- layer.borderWidth = .f;
- layer.borderColor = [UIColor redColor].CGColor;
- layer.contents = (__bridge id)image.CGImage;
- [self.view.layer addSublayer:layer];
- // 6s后执行操作
- [[GCDQueue mainQueue] execute:^{
- // 初始化3D变换,获取默认值
- CATransform3D perspectiveTransform = CATransform3DIdentity;
- // 透视
- perspectiveTransform.m34 = -1.0/500.0;
- // 位移
- perspectiveTransform = CATransform3DTranslate(perspectiveTransform, , -, );
- // 空间旋转
- perspectiveTransform = CATransform3DRotate(perspectiveTransform,
- DEGREES_TO_RADIANS(), ., , -0.5);
- // 缩放变换
- perspectiveTransform = CATransform3DScale(perspectiveTransform, 0.75, 0.75, 0.75);
- layer.transform = perspectiveTransform;
- layer.speed = 0.5;
- } afterDelay:NSEC_PER_SEC * ];
- // 9s后执行操作
- [[GCDQueue mainQueue] execute:^{
- // 初始化3D变换,获取默认值
- CATransform3D perspectiveTransform = CATransform3DIdentity;
- layer.transform = perspectiveTransform;
- layer.speed = 0.5;
- } afterDelay:NSEC_PER_SEC * ];
- }
- @end
核心代码:
http://stackoverflow.com/questions/3881446/meaning-of-m34-of-catransform3d
关于CATransform3D矩阵变换的简单解析的更多相关文章
- 对 cloudwu 简单的 cstring 进行简单解析
题外话 以前也用C写过字符串,主要应用的领域是,大字符串,文件读取方面.写的很粗暴,用的凑合着.那时候看见云风前辈的一个开源的 cstring 串. 当时简单观摩了一下,觉得挺好的.也没细看.过了较长 ...
- 基于DOM的XSS注入漏洞简单解析
基于DOM的XSS注入漏洞简单解析http://automationqa.com/forum.php?mod=viewthread&tid=2956&fromuid=21
- 15.5 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表
点击返回:自学Zabbix之路 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表 1. Actions表 actions表记录了当触发器触发时,需要采用的动作. 2.Aler ...
- 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)
深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...
- List<T>集合的Sort自定义排序用法简单解析
List<T>集合的Sort自定义排序用法简单解析: 如下:一系列无序数字,如果想要他们倒序排列,则使用如下代码: 那么如何理解这段代码呢? (x,y)表示相邻的两个对象,如果满足条件:x ...
- Maven项目pom.xml文件简单解析
Maven项目pom.xml简单解析 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h ...
- 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表、Hosts_groups表、Interface表
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表.Hosts_grou ...
- 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表 Items表记录了i ...
- 自学Zabbix之路15.3 Zabbix数据库表结构简单解析-Triggers表、Applications表、 Mapplings表
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.3 Zabbix数据库表结构简单解析-Triggers表.Applica ...
随机推荐
- 关于语法节点Tree、类型Type和符号Symbol
每个语法节点Tree都有Type属性,部分的语法节点有Symbol属性,如下: 与Symbol类型与Type类型之间的关系如下: 下面是Symbol与Type之间的关系: (1)MethodSymbo ...
- resotreIpAddress
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- PTA (Advanced Level) 1022 Digital Library
Digital Library A Digital Library contains millions of books, stored according to their titles, auth ...
- R语言数据重塑cbind+rbind+merge+ melt+cast
R语言中的数据重塑是关于变化的数据分为行和列的方式.大多数R地数据处理的时候是通过将输入的数据作为一个数据帧进行.这是很容易提取一个数据帧的行和列数据,但在某些情况,当我们需要的数据帧的格式是不同的来 ...
- Metronic 对话 chat
http://keenthemes.com/preview/metronic/theme/admin_1/index.html: jquery让滚动条默认在最底部:$('#content').scro ...
- js原型及原型链解析
js原型.原型链 这几天闲了看了下js的原型,以下内容为个人理解,如有错误,尽请指正. 首先,明确一点:js中的对象分为普通对象和函数对象,一般我们自定义的可以被new的函数称作函数对象,另外js内置 ...
- 标准Trie字典树学习二:Java实现方式之一
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! 系列文章: 1. 标准Trie字典树学习一:原理解析 2.标准T ...
- Web开发 学习积累20161018
项目 一.项目做的是什么 业务逻辑 -> 增删改查 二.什么是面向对象编程,它有哪些好处 oop:object oriented programming <>核心思想:使用人类思考问 ...
- SparkGraphx计算指定节点的N度关系节点
直接上代码: package horizon.graphx.util import java.security.InvalidParameterException import horizon.gra ...
- JAVA基础之——JDK分析io、nio
在哪儿:jdk\jre\lib\rt.jar package java.io; package java.nio; 1 分类 1.1 IO 持久化序列化对象并压缩步骤 new FileOutput ...