今天来了解下CATransform3D的一些基本的知识。
CATransform3D是一个用于处理3D形变的类,其可以改变控件的平移、缩放、旋转、斜交等,其坐标系统采用的是三维坐标系,即向右为x轴正方向,向下为y轴正方向,垂直屏幕向外为z轴正方向。

今天来了解下CATransform3D的一些基本的知识。
1. CATransform3D是一个用于处理3D形变的类,其可以改变控件的平移、缩放、旋转、斜交等,其坐标系统采用的是三维坐标系,即向右为x轴正方向,向下为y轴正方向,垂直屏幕向外为z轴正方向

public func CATransform3DMakeTranslation( tx: CGFloat,  ty: CGFloat, _ tz: CGFloat) -> CATransform3D

当tx为正值时,会向x轴正方向平移,反之,则向x轴负方向平移;当ty为正值时,会向y轴正方向平移,反之,则向y轴负方向平移;当tz为正值时,会向z轴正方向平移,反之,则向z轴负方向平移。

2. CATransform3DTranslate实现以一个已经存在的形变为基准,在x轴方向上平移x单位,在y轴方向上平移y单位,在z轴方向上平移z单位。
格式:

public func CATransform3DTranslate( t: CATransform3D,  tx: CGFloat,  ty: CGFloat,  tz: CGFloat) -> CATransform3D

3. CATransform3DMakeScale实现以初始位置为基准,在x轴方向上缩放x倍,在y轴方向上缩放y倍,在z轴方向上缩放z倍。
格式:

public func CATransform3DMakeScale( sx: CGFloat,  sy: CGFloat,  sz: CGFloat) -> CATransform3D

当sx为正值时,会在x轴方向上缩放x倍,反之,则在缩放的基础上沿着竖直线翻转;当sy为正值时,会在y轴方向上缩放y倍,反之,则在缩放的基础上沿着水平线翻转。

4. CATransform3DScale实现以一个已经存在的形变为基准,在x轴方向上缩放x倍,在y轴方向上缩放y倍,在z轴方向上缩放z倍。
格式:

public func CATransform3DScale( t: CATransform3D,  sx: CGFloat,  sy: CGFloat,  sz: CGFloat) -> CATransform3D

5. CATransform3DMakeRotation实现以初始位置为基准,在x轴,y轴,z轴方向上逆时针旋转angle弧度(弧度=π/180×角度,M_PI弧度代表180角度),x,y,z三个参数只分是否为0。
格式:

public func CATransform3DMakeRotation( angle: CGFloat,  x: CGFloat,  y: CGFloat,  z: CGFloat) -> CATransform3D

当x,y,z值为0时,代表在该轴方向上不进行旋转,当值为1时,代表在该轴方向上进行逆时针旋转,当值为-1时,代表在该轴方向上进行顺时针旋转。

6. CATransform3DRotate实现以一个已经存在的形变为基准,在x轴,y轴,z轴方向上逆时针旋转angle弧度(弧度=π/180×角度,M_PI弧度代表180角度),x,y,z三个参数只分是否为0。
格式:

public func CATransform3DRotate( t: CATransform3D,  angle: CGFloat,  x: CGFloat,  y: CGFloat,  z: CGFloat) -> CATransform3D

方法调用,调用方法都是一样的:

如下:

以一个旋转动画为例:

self.myView.frame = CGRect(x:,y:,width:kScreenWidth-,height:)
self.myView.backgroundColor = UIColor.red
self.view.addSubview(self.myView)
var tranform = CATransform3D()
tranform = CATransform3DMakeRotation(CGFloat(Double.pi * / ), , , ); UIView.animate(withDuration: ) { self.myView.layer.transform = tranform
}

创建一个view,然后创建一个tranform,然后运行就可以了,角度的写法原来的M_PI废弃了,现在使用Double.pi/CGFloat.pi来进行设置!

附一个给表格cell的显示动画:

//设置cell的显示动画
func tableView(tableView: UITableView!, willDisplayCell cell: UITableViewCell!,
forRowAtIndexPath indexPath: NSIndexPath!){
//设置cell的显示动画为3D缩放
//xy方向缩放的初始值为0.1
cell.layer.transform = CATransform3DMakeScale(0.1, 0.1, )
//设置动画时间为0.25秒,xy方向缩放的最终值为1
UIView.animateWithDuration(0.25, animations: {
cell.layer.transform=CATransform3DMakeScale(, , )
})
}

大体的实现思路就是这样的,可以一个一个方法的试试!动画就是平移/旋转/缩放几种样式!

swift--CATransform3D的简单介绍的更多相关文章

  1. 李洪强iOS开发Swift篇—01_简单介绍

    李洪强iOS开发Swift篇—01_简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objec ...

  2. iOS开发Swift篇—(一)简单介绍

    iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...

  3. iOS开发Swift篇—简单介绍

    iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...

  4. CocoaPods常用终端命令及Profile文件简单介绍

    Pod常用终端命令 pod init 创建pod文件 pod install 开始安装第三方框架,如果网上有更新,会安装最新的 pod install --verbose--no-repo-updat ...

  5. Python简单介绍以及Python环境搭建(入门1)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6400694.html 本文出自:[Edwin博客园] Python 简单介绍 适合领域: Web网站和各种网 ...

  6. openstack架构简单介绍J版(更新中)

    title : OPENSTACK架构简单介绍 openstack的发展及历史 openstack是什么? OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算‎软件,以A ...

  7. 高阶函数---swift中的泛型介绍(一步步实现Map函数)

    说明 本文内容均出自函数式 Swift一书, 此处整理仅仅是为了自己日后方便查看, 需要深入研究的话, 可以点进去购买, 支持原作者 本书由 王巍–新浪微博大神翻译 OneV's Den 喵神博客 接 ...

  8. [原创]关于mybatis中一级缓存和二级缓存的简单介绍

    关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...

  9. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  10. 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍

    一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...

随机推荐

  1. Java中的this和super

    在Java中有两个非常特殊的变量:this和super,这两个变量在使用前都是不需要声明的.this变量使用在一个成员函数的内部,指向当前对象,当前对象指的是调用当前正在执行方法的那个对象.super ...

  2. 【转】常用 Microsoft .NET Framework 各版本下載網址列表

    研究] 常用 Microsoft .NET Framework 各版本下載網址列表 2014-05-23 僅列常用的 (IA64, Beta, hotfix, ... 不列) Microsoft .N ...

  3. find & grep 命令 in linux(转)

    Linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: -exec,find命令对匹配的文件执 ...

  4. 用Python中的tkinter模块作图(续)

    八.显示文字 用create_text在画布上写字.这个函数只需要两个坐标(文字x和y的位置),还有一个具名参数来接受要显示的文字.例如: >>> from tkinter impo ...

  5. SpringBoot系列九:SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 服务整合 2.背景 在进行项目开发的时候经常会遇见以下的几个问题:需要进行邮件发送.定时的任务调 ...

  6. JAVA平台在手机上广泛应用

    JAVA平台由于在手机上广泛应用,使得扩展名为jar的游戏成为目前手机游戏市场上最大的家族,直接传入手机直接安装即可. 众所周知,JAVA是一种跨平台的程序设计语言.由于其高可移植性.简单.可靠.安全 ...

  7. 嵌入式开发之hi3519---网络不通问题rmii

    http://www.ebaina.com/bbs/forum.php?mod=viewthread&tid=18092&extra=page%3D1%26filter%3Dtypei ...

  8. Wings 3D

    Wings 3D 编辑 Wings 3D 是一个开源的三维计算机图形软件.使用翼边数据库.注重于多边形建模,构思取与 Izware 的 Nendo 和 Mirai.支持多种操作系统,包括 Linux. ...

  9. linux下时间同步的两种方法分享

    方法1:与一个已知的时间服务器同步 复制代码 代码如下: ntpdate time.nist.gov 其中 time.nist.gov 是一个时间服务器. 删除本地时间并设置时区为上海 复制代码 代码 ...

  10. java 对象数组

    java 对象数组 from zhaocundang@163.com 先 用类声明数组: 再把类的实例赋给数组: package works; import java.util.Scanner; pu ...