Swift - transform.m34动画示例

时间:2021-05-17 04:53:26

Swift - transform.m34动画示例

Swift - transform.m34动画示例

效果

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
}
}