Swift - transform.m34动画示例

效果

源码

https://github.com/YouXianMing/Swift-Animations

//
// CATransform3DM34Controller.swift
// Swift-Animations
//
// Created by YouXianMing on 16/8/19.
// Copyright © 2016年 YouXianMing. All rights reserved.
// import UIKit class CATransform3DM34Controller: NormalTitleViewController { var layer : CALayer!
var timer : GCDTimer!
var transformState : Bool! = false override func setup() { super.setup() initLayer() timerEvent()
} func initLayer() { let image = UIImage(named: "")
layer = CALayer()
layer.frame = CGRectMake(, , image!.size.width / , image!.size.height / )
layer.position = (contentView?.middlePoint)!
layer.borderWidth =
layer.borderColor = UIColor.blackColor().CGColor
layer.contents = image?.CGImage
contentView?.layer.addSublayer(layer)
} func timerEvent() { weak var wself = self
timer = GCDTimer(inQueue: GCDQueue.mainQueue)
timer.event({ if wself?.transformState == false { wself?.transformState = true
wself?.transformStateEvent() } else { wself?.transformState = false
wself?.normalStateEvent()
} }, timeIntervalWithSeconds: 2.0, delayWithSeconds: 1.0)
timer.start()
} func transformStateEvent() { var 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) layer.transform = perspectiveTransform
layer.allowsEdgeAntialiasing = true
layer.speed = 0.5
} func normalStateEvent() { let perspectiveTransform = CATransform3DIdentity
layer.transform = perspectiveTransform
layer.speed = 0.5
}
}

Swift - transform.m34动画示例的更多相关文章

  1. XamarinAndroid组件教程RecylerView适配器设置动画示例

    XamarinAndroid组件教程RecylerView适配器设置动画示例 [示例1-3]下面将在RecylerView的子元素进行滚动时,使用适配器动画.具体的操作步骤如下: (1)创建一个名为R ...

  2. canvas高级动画示例

    canvas高级动画示例 演示地址 https://qzruncode.github.io/example/index.html <!DOCTYPE html> <html lang ...

  3. canvas基础动画示例

    canvas基础动画示例 本文主要用最简单的例子,展示canvas动画效果是如何实现的 动画效果,是一个球绕着一点旋转 const canvas = document.getElementById(' ...

  4. 【补间动画示例】Tweened Animation

    代码中定义动画示例 public class MainActivity extends ListActivity </integer> 常用的Activity转场动画中的补间动画 publ ...

  5. css3 transform做动画

    css3 transform做动画第一种用关键帧 这里就不说了 就说第二种方法用 transition属性 ps:1jquery anim不支持transform动画 但css还是支. 2 css3关 ...

  6. Swift 表视图动画教程: Drop-In Cards

    http://www.raywenderlich.com/76024/swift-table-view-animations-tutorial-drop-cards 标准 table view 是一个 ...

  7. [DeviceOne开发]-手势动画示例分享

    一.简介 这是iOS下的效果,android下完全一致.通过do_GestureView组件和do_Animation组件,deviceone能很容易实现复杂的跨平台纯原生动画效果,这个示例就是通过手 ...

  8. [deviceone开发]-心形点赞动画示例

    一.简介 这个示例展示do_Animator组件的简单使用,通过点击"点赞"按钮,不断弹出心形图片,向上动画漂移到顶部消失.间隔时间和上下左右移动的步长都是一定范围的随机值.二.效 ...

  9. [deviceone开发]-一个很炫的手势动画示例

    一.简介 这是iOS下的效果,android下完全一致.通过do_GestureView组件和do_Animation组件,deviceone能很容易实现复杂的跨平台纯原生动画效果,这个示例就是通过手 ...

随机推荐

  1. Java编程的逻辑 (16) - 继承的细节

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  2. synchronized和lock

    Synchronized  同步代码块 使用 monitorenter 和 moniterexit 指令实现, monitorenter指令插入到同步代码块的开始位置, moniterexit 指令插 ...

  3. yum源安装php报错缺少libmcrypt.so.4()(64bit)库

    https://blog.csdn.net/programercch/article/details/56282184

  4. C++ 矩阵库 eigen

    找了好久才发现了一个这么方便的C++矩阵库. 官网 http://eigen.tuxfamily.org/index.php?title=Main_Page 参考文章 http://blog.csdn ...

  5. php调用python脚本

    主要参考两篇文章 PHP中的换行详解 利用PHP调试Python Python小窥 - 写给Python的入门者 这两篇文章结合起来进行测试,主要过程如下 cd /var/www/html mkdir ...

  6. mysql存储引擎innodb、myisam区别

    MyISAM与InnoDB的区别是什么? 1. 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩 ...

  7. Wannafly挑战赛21A

    题目链接 Wannafly挑战赛21A 题解 代码 #include <cstdio> #include <cmath> #define MAX 1000005 #define ...

  8. 【bzoj3451】Tyvj1953 Normal 期望+树的点分治+FFT

    题目描述 给你一棵 $n$ 个点的树,对这棵树进行随机点分治,每次随机一个点作为分治中心.定义消耗时间为每层分治的子树大小之和,求消耗时间的期望. 输入 第一行一个整数n,表示树的大小接下来n-1行每 ...

  9. hdu 1754 I Hate It(树状数组区间求最值)2007省赛集训队练习赛(6)_linle专场

    题意: 输入一行数字,查询第i个数到第j个数之间的最大值.可以修改其中的某个数的值. 输入: 包含多组输入数据. 每组输入首行两个整数n,m.表示共有n个数,m次操作. 接下来一行包含n个整数. 接下 ...

  10. [Android]对BaseAdapter中ViewHolder编写简化(转)

    来自博客:http://www.cnblogs.com/tiantianbyconan/p/3642849.html 在Android项目中,经常都会用到ListView这个控件,而相应的Adapte ...