//
// ViewController.swift
// 汤姆猫
//
// Created by admin on 15/12/25.
// Copyright © 2015年 jin. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
//定义 UIImageView 变量
var imageView:UIImageView = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
//设置imageView坐标,尺寸
imageView.frame = CGRect(origin: CGPoint(x: 20, y: 20), size: CGSize(width: 280, height: 450))
//设置imageView默认图片
imageView.image = UIImage(contentsOfFile: NSBundle.mainBundle().pathForResource("cymbal_00", ofType: "jpg")!)!
//把imageView添加进主视图
self.view.addSubview(self.imageView)
addButton("cymbal",actionName: "cymbal",x:50,y:400)
addButton("pie",actionName: "pie",x:100,y:400)
// Do any additional setup after loading the view, typically from a nib.
}
//添加按钮方法
func addButton(backgroundImage:String,actionName:String,x:CGFloat,y:CGFloat)
{
//添加按钮
let cymbalButton = UIButton()
let buttonBackgroundImage = UIImage(imageLiteral: backgroundImage)
//设置按钮背景图片
cymbalButton.setBackgroundImage(buttonBackgroundImage, forState: UIControlState())
//设置按钮位置坐标和宽度高度
cymbalButton.frame = CGRect(origin: CGPoint(x: x, y: y), size: CGSize(width: buttonBackgroundImage.size.width, height: buttonBackgroundImage.size.height))
//绑定事件方法,带参数的方法要加上冒号
cymbalButton.addTarget(self, action: Selector("\(actionName):"), forControlEvents: UIControlEvents.TouchDown)
//添加进主视图
self.view.addSubview(cymbalButton)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func cymbal(sender: AnyObject) {
//执行动画
doAnimatingImage(self.getAnimatingImage("cymbal_",startNumber:0,endNumber:12))
}
@IBAction func pie(sender: AnyObject) {
doAnimatingImage(self.getAnimatingImage("pie_",startNumber:0,endNumber:23))
}
//获得图片资源
func getAnimatingImage(imagePrefix:String,startNumber:Int,endNumber:Int)->[UIImage]
{
var imageArr:[UIImage] = []
for var i = startNumber;i <= endNumber;i++
{
//不足两位用0补齐
let imagePath = String(format: "%02i", i)
//使用这个方式(imageLiteral)创建的图片会缓存在内存中,系统内存占用会很大
//imageArr.append(UIImage(imageLiteral: "\(imagePrefix)\(imagePath)"))
//这个方式创建的图片不会缓存在内存中,但是要注意,图片不能放在.xcassets文件中,.xcassets中的文件都是经过处理的,不能像这样取得
imageArr.append(UIImage(contentsOfFile: NSBundle.mainBundle().pathForResource("\(imagePrefix)\(imagePath)", ofType: "jpg")!)!)
}
return imageArr
}
//播放动画
func doAnimatingImage(imageArr:[UIImage])
{
//当前正在执行动画的时候,不响应动作
if imageView.isAnimating() == false
{
//设置帧动画图片数组
imageView.animationImages = imageArr
//设置重复次数,默认是执行无数次,这里设置成1次
imageView.animationRepeatCount = 1
//设置动画执行时间
imageView.animationDuration = NSTimeInterval(Double(imageArr.count) * 0.07)
//开始执行动画
imageView.startAnimating()
//动画之行完毕之后释放内存,这个函数是延时执行的
self.performSelector(Selector("clearAnimetingImage"), withObject: nil, afterDelay: imageView.animationDuration)
}
}
//清除对UIImage数组的强引用,释放内存
func clearAnimetingImage()
{
imageView.animationImages = nil
}
}