关于CATransform3D矩阵变换的简单解析

效果图:

我能能够用上的CATransform3D其实很简单,并不复杂.

CATransform3D有着4种东西我们可以设置.

1. 透视效果(由m34的值决定)

2. 位移变换(主要是x,y方向)

3. 缩放变换

4. 空间旋转

源码:

  1. //
  2. // RootViewController.m
  3. //
  4. // Copyright (c) 2014年 Y.X. All rights reserved.
  5. //
  6.  
  7. #import "RootViewController.h"
  8. #import "CATransform3DOperation.h"
  9. #import "YXGCD.h"
  10.  
  11. @interface RootViewController ()
  12.  
  13. @property (nonatomic, strong) GCDTimer *timer;
  14.  
  15. @end
  16.  
  17. // 将角度转换为弧度
  18. #define DEGREES_TO_RADIANS(d) ((d) * M_PI / 180.f)
  19.  
  20. @implementation RootViewController
  21.  
  22. - (void)viewDidLoad
  23. {
  24. [super viewDidLoad];
  25. self.view.backgroundColor = [UIColor blackColor];
  26.  
  27. // 给Layer一个图片内容
  28. UIImage *image = [UIImage imageNamed:@""];
  29. CALayer *layer = [CALayer layer];
  30. layer.frame = CGRectMake(, , image.size.width, image.size.height);
  31. layer.position = self.view.center;
  32. layer.borderWidth = .f;
  33. layer.borderColor = [UIColor redColor].CGColor;
  34. layer.contents = (__bridge id)image.CGImage;
  35. [self.view.layer addSublayer:layer];
  36.  
  37. // 6s后执行操作
  38. [[GCDQueue mainQueue] execute:^{
  39.  
  40. // 初始化3D变换,获取默认值
  41. CATransform3D perspectiveTransform = CATransform3DIdentity;
  42.  
  43. // 透视
  44. perspectiveTransform.m34 = -1.0/500.0;
  45.  
  46. // 位移
  47. perspectiveTransform = CATransform3DTranslate(perspectiveTransform, , -, );
  48.  
  49. // 空间旋转
  50. perspectiveTransform = CATransform3DRotate(perspectiveTransform,
  51. DEGREES_TO_RADIANS(), ., , -0.5);
  52.  
  53. // 缩放变换
  54. perspectiveTransform = CATransform3DScale(perspectiveTransform, 0.75, 0.75, 0.75);
  55.  
  56. layer.transform = perspectiveTransform;
  57. layer.speed = 0.5;
  58.  
  59. } afterDelay:NSEC_PER_SEC * ];
  60.  
  61. // 9s后执行操作
  62. [[GCDQueue mainQueue] execute:^{
  63.  
  64. // 初始化3D变换,获取默认值
  65. CATransform3D perspectiveTransform = CATransform3DIdentity;
  66.  
  67. layer.transform = perspectiveTransform;
  68. layer.speed = 0.5;
  69.  
  70. } afterDelay:NSEC_PER_SEC * ];
  71. }
  72.  
  73. @end

核心代码:

http://stackoverflow.com/questions/3881446/meaning-of-m34-of-catransform3d

关于CATransform3D矩阵变换的简单解析的更多相关文章

  1. 对 cloudwu 简单的 cstring 进行简单解析

    题外话 以前也用C写过字符串,主要应用的领域是,大字符串,文件读取方面.写的很粗暴,用的凑合着.那时候看见云风前辈的一个开源的 cstring 串. 当时简单观摩了一下,觉得挺好的.也没细看.过了较长 ...

  2. 基于DOM的XSS注入漏洞简单解析

    基于DOM的XSS注入漏洞简单解析http://automationqa.com/forum.php?mod=viewthread&tid=2956&fromuid=21

  3. 15.5 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表

    点击返回:自学Zabbix之路 自学Zabbix之路15.5 Zabbix数据库表结构简单解析-其他 表  1. Actions表 actions表记录了当触发器触发时,需要采用的动作. 2.Aler ...

  4. 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)

    深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...

  5. List<T>集合的Sort自定义排序用法简单解析

    List<T>集合的Sort自定义排序用法简单解析: 如下:一系列无序数字,如果想要他们倒序排列,则使用如下代码: 那么如何理解这段代码呢? (x,y)表示相邻的两个对象,如果满足条件:x ...

  6. Maven项目pom.xml文件简单解析

    Maven项目pom.xml简单解析 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h ...

  7. 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表、Hosts_groups表、Interface表

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表.Hosts_grou ...

  8. 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表 Items表记录了i ...

  9. 自学Zabbix之路15.3 Zabbix数据库表结构简单解析-Triggers表、Applications表、 Mapplings表

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.3 Zabbix数据库表结构简单解析-Triggers表.Applica ...

随机推荐

  1. 关于语法节点Tree、类型Type和符号Symbol

    每个语法节点Tree都有Type属性,部分的语法节点有Symbol属性,如下: 与Symbol类型与Type类型之间的关系如下: 下面是Symbol与Type之间的关系: (1)MethodSymbo ...

  2. resotreIpAddress

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

  3. PTA (Advanced Level) 1022 Digital Library

    Digital Library A Digital Library contains millions of books, stored according to their titles, auth ...

  4. R语言数据重塑cbind+rbind+merge+ melt+cast

    R语言中的数据重塑是关于变化的数据分为行和列的方式.大多数R地数据处理的时候是通过将输入的数据作为一个数据帧进行.这是很容易提取一个数据帧的行和列数据,但在某些情况,当我们需要的数据帧的格式是不同的来 ...

  5. Metronic 对话 chat

    http://keenthemes.com/preview/metronic/theme/admin_1/index.html: jquery让滚动条默认在最底部:$('#content').scro ...

  6. js原型及原型链解析

    js原型.原型链 这几天闲了看了下js的原型,以下内容为个人理解,如有错误,尽请指正. 首先,明确一点:js中的对象分为普通对象和函数对象,一般我们自定义的可以被new的函数称作函数对象,另外js内置 ...

  7. 标准Trie字典树学习二:Java实现方式之一

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! 系列文章: 1. 标准Trie字典树学习一:原理解析 2.标准T ...

  8. Web开发 学习积累20161018

    项目 一.项目做的是什么 业务逻辑 -> 增删改查 二.什么是面向对象编程,它有哪些好处 oop:object oriented programming <>核心思想:使用人类思考问 ...

  9. SparkGraphx计算指定节点的N度关系节点

    直接上代码: package horizon.graphx.util import java.security.InvalidParameterException import horizon.gra ...

  10. JAVA基础之——JDK分析io、nio

    在哪儿:jdk\jre\lib\rt.jar package java.io;   package java.nio; 1 分类 1.1 IO 持久化序列化对象并压缩步骤 new FileOutput ...