//
// ViewController.swift
// 图片浏览器_核心动画
//
// Created by admin on 16/1/28.
// Copyright © 2016年 jin. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var image: UIImageView!
lazy var images:[UIImage] = {
var images:[UIImage] = []
for var i = 1;i <= 9;i++
{
images.append(UIImage(imageLiteral: "\(i)"))
}
return images
}()
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: "switchImage:")
self.image.addGestureRecognizer(tap)
self.image.image = self.images.first
// Do any additional setup after loading the view, typically from a nib.
}
/**
* 提示:转场的动画的类型(type)和子头型(subtype) 能用字符串常量就用字符常量
*/
/**
*******************************************************
type:动画类型(比如:滴水效果,翻转效果...)
-------------------------------------------------------
fade kCATransitionFade 交叉淡化过渡
moveIn kCATransitionMoveIn 新视图移到旧视图上面
push kCATransitionPush 新视图把旧视图推出去
reveal kCATransitionReveal 将旧视图移开,显示下面的新视图
pageCurl 向上翻一页
pageUnCurl 向下翻一页
rippleEffect 滴水效果
suckEffect 收缩效果,如一块布被抽走
cube 立方体效果
oglFlip 上下左右翻转效果
rotate 旋转效果
cameraIrisHollowClose 相机镜头关上效果(不支持过渡方向)
cameraIrisHollowOpen 相机镜头打开效果(不支持过渡方向)
*******************************************************
subtype: 动画方向(比如说是从左边进入,还是从右边进入...)
------------------------------------------------------
kCATransitionFromRight;
kCATransitionFromLeft;
kCATransitionFromTop;
kCATransitionFromBottom;
当 type 为@"rotate"(旋转)的时候,它也有几个对应的 subtype,分别为:
90cw 逆时针旋转 90°
90ccw 顺时针旋转 90°
180cw 逆时针旋转 180°
180ccw 顺时针旋转 180°
**/
// 改变图片
func switchImage(tap:UITapGestureRecognizer)
{
var imageIndex = 0
let activeIndex = self.images.indexOf(self.image.image!)
if tap.locationInView(tap.view).x < (UIScreen.mainScreen().bounds.size.width * 0.5)
{
imageIndex = (activeIndex! == 0) ? self.images.count - 1 : activeIndex! - 1
}
else
{
imageIndex = (activeIndex! == (self.images.count - 1)) ? 0 : activeIndex! + 1
}
self.image.image = self.images[imageIndex]
// 实例化动画对象
let animation = CATransition()
// 动画时间
animation.duration = 2
// 动画类型
// `fade', `moveIn', `push' and `reveal'
animation.type = "moveIn"
// 动画执行的方向
// fromLeft', 动画由左边开始
// `fromRight', 动画由右边开始
// `fromTop' and
// * `fromBottom'
animation.subtype = "fromBottom"
// 添加动画到图层
self.image.layer.addAnimation(animation, forKey: nil)
}
}