//
// ViewController.swift
// 核心动画
//
// Created by admin on 16/1/27.
// Copyright © 2016年 jin. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
self.imageView.layer.contents = UIImage(imageLiteral: "3").CGImage
// Do any additional setup after loading the view, typically from a nib.
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.scale()
}
// 缩放
func scale()
{
// 这个属性
let animation = CABasicAnimation()
animation.keyPath = "transform.scale"
// animation.toValue = NSValue.init(CATransform3D: CATransform3DMakeScale(1.5, 1.5, 1.5))
animation.byValue = NSValue.init(CATransform3D: CATransform3DMakeScale(1.5, 1.5, 1.5))
// self.imageView.layer.transform = CATransform3DMakeScale(1.5, 1.5, 1.5)
animation.removedOnCompletion = false
animation.fillMode = kCAFillModeForwards
self.imageView.layer.addAnimation(animation, forKey: nil)
}
// 旋转
func rotation()
{
// 这个属性
let animation = CABasicAnimation()
// 逐个修改
// animation.keyPath = "transform.rotation.x"
// animation.byValue = CGFloat(M_PI)
// animation.removedOnCompletion = false
// animation.fillMode = kCAFillModeForwards
// 直接修改多个坐标
animation.keyPath = "transform.rotation"
self.imageView.layer.transform = CATransform3DMakeRotation(CGFloat(M_PI), 1, 1, 1)
self.imageView.layer.addAnimation(animation, forKey: nil)
}
// 平移动画
func translation()
{
let animation = CABasicAnimation()
// 同时改变横向和纵向
animation.keyPath = "transform.translation"
// 从这个位置开始
// animation.fromValue = NSValue.init(CGPoint: CGPointMake(10, 10))
// 每次动画执行之后都会改变的距离
animation.byValue = NSValue.init(CGPoint: CGPointMake(20, 20))
// 在第一次执行动画的时候会发生偏移,然后无效了
// animation.toValue = NSValue.init(CGPoint: CGPointMake(30, 30))
// animation.keyPath = "transform.translation.x"
// animation.byValue = 20
animation.removedOnCompletion = false
animation.fillMode = kCAFillModeForwards
// 直接对属性进行赋值也是ok的
// self.imageView.layer.transform = CATransform3DMakeTranslation(100, 100, 10)
// 单独改变一个方向
animation.keyPath = "transform.translation.x"
animation.byValue = 10
self.imageView.layer.addAnimation(animation, forKey: nil)
}
// bounds的动画效果
func bounds()
{
// 实例化动画对象
let animation = CABasicAnimation()
// 设置监听的属性名
animation.keyPath = "bounds"
// 使用这个的话会有动画效果,并且动画执行完毕也不会回到原来的状态
// self.imageView.layer.bounds = CGRectMake(0, 0, 100, 100)
// 使用这个会执行动画效果,但是结束之后会回到原来的状态,如果不希望恢复,需要设置下面两个属性
animation.toValue = NSValue.init(CGRect: CGRectMake(0, 0, 100, 100))
// // 不设置下面两项的话动画执行完毕会回到原来的状态
animation.removedOnCompletion = false
animation.fillMode = kCAFillModeForwards
animation.duration = 10
// 给图层添加动画
self.imageView.layer.addAnimation(animation, forKey: nil)
}
}