swift简单动画demo
发布时间:2020-12-14 06:59:22 所属栏目:百科 来源:网络整理
导读:from: swift简单动画demo 动画GIF No. name(cn) name(en) gif 1 缩放动画 Scale 2 位移动画 Translation 3 旋转动画 Rotation 4 颜色动画 Color 5 弹簧动画 Spring 6 组合动画 Concat 代码 import UIKitclass ViewController: UIViewController { var rect:
from: 动画GIF
代码import UIKit
class ViewController: UIViewController {
var rect: UIView!
override func viewDidLoad() {
super.viewDidLoad()
initrectView()
}
var i: Int = 0
@IBAction func onNextButtonClick(sender: UIButton) {
switch i%6 {
case 0:
showScaleAnim() // 1. 缩放动画
case 1:
showTranslationAnim() // 2. 位移动画
case 2:
showRotationAnim() // 3. 旋转动画
case 3:
showColorAnim() // 4. 颜色动画
case 4:
showSpringAnim() // 5. 弹簧动画
default:
showConcatAnim() // 6. 组合动画
}
i += 1
}
/** 初始化动画对象 */
func initrectView() {
let rectFrame = CGRectMake(50,50,100,100)
rect = UIView(frame: rectFrame)
rect.backgroundColor = UIColor.cyanColor()
self.view.addSubview(rect)
}
func resumeRectView() -> Void {
rect.transform = CGAffineTransformIdentity
}
/** 普通动画. 缩放 */
func showScaleAnim() {
let duration: NSTimeInterval = 3 // 动画持续时间
let delay: NSTimeInterval = 0 // 动画延迟时间
let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
let animations: () -> Void = {() -> Void in
self.rect.transform = CGAffineTransformMakeScale(2,2) // 缩放动画,x 放大 2,y 放大 2
}
UIView.animateWithDuration(duration,delay: delay,options: options,animations: animations) { (finish) -> Void in
self.resumeRectView()
print(finish)
}
}
/** 普通动画. 位移 */
func showTranslationAnim() {
let duration: NSTimeInterval = 3 // 动画持续时间
let delay: NSTimeInterval = 0 // 动画延迟时间
let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
let animations: () -> Void = {() -> Void in
self.rect.transform = CGAffineTransformMakeTranslation(0,100) // 位移动画,x 移动 0,y 移动 100
}
UIView.animateWithDuration(duration,animations: animations) { (finish) -> Void in
self.resumeRectView()
print(finish)
}
}
/** 普通动画. 旋转 */
func showRotationAnim() {
let duration: NSTimeInterval = 3 // 动画持续时间
let delay: NSTimeInterval = 0 // 动画延迟时间
let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
let animations: () -> Void = {() -> Void in
self.rect.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2)) // 旋转动画,旋转pi
}
UIView.animateWithDuration(duration,animations: animations) { (finish) -> Void in
self.resumeRectView()
print(finish)
}
}
/** 普通动画. 颜色 */
func showColorAnim() {
let duration: NSTimeInterval = 3 // 动画持续时间
let delay: NSTimeInterval = 0 // 动画延迟时间
let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
let animations: () -> Void = {() -> Void in
self.rect.backgroundColor = UIColor.greenColor() // 颜色动画,变色为绿色
}
UIView.animateWithDuration(duration,animations: animations) { (finish) -> Void in
self.resumeRectView()
print(finish)
}
}
/** 弹簧动画,一个球变大 */
func showSpringAnim() {
let duration: NSTimeInterval = 3 // 动画持续时间
let delay: NSTimeInterval = 0 // 动画延迟时间
let damping: CGFloat = 0.3 // 阻尼. 越大感觉越有粘性
let velocity: CGFloat = 0 // 初速度
let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
let animations: () -> Void = {() -> Void in
self.rect.transform = CGAffineTransformMakeTranslation(0,150) // 位移动画
}
UIView.animateWithDuration(duration,usingSpringWithDamping: damping,initialSpringVelocity: velocity,animations: animations) { (finish) -> Void in
self.resumeRectView()
print(finish)
}
}
/** 组合动画. 缩放 + 位移 + 颜色 */
func showConcatAnim() {
let duration: NSTimeInterval = 3 // 动画持续时间
let delay: NSTimeInterval = 0 // 动画延迟时间
let options: UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseInOut // 动画选项
let animations: () -> Void = {() -> Void in
let anim1 = CGAffineTransformMakeScale(2,y 放大 2
let anim2 = CGAffineTransformMakeTranslation(150,50) // 位移动画,x 移动 150,y 移动 50
let concatAnim = CGAffineTransformConcat(anim1,anim2) // 组合动画,缩放和位移动画一起组合成新的动画
self.rect.backgroundColor = UIColor.greenColor() // 颜色动画
self.rect.transform = concatAnim
}
UIView.animateWithDuration(duration,animations: animations) { (finish) -> Void in
self.resumeRectView()
print(finish)
}
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |