设置UIImage动画的正确/干净方式是什么?

时间:2016-10-29 15:40:13

标签: ios swift animation

第一篇文章,嗨,伙计们:)

我正在构建我的第一个项目,我正在努力使代码干净整洁。我的应用程序是一个天气应用程序,我的应用程序的一部分是一个勾选动画,播放天气时播放。

要做这个动画,我在开头声明图像,但它看起来非常混乱,而且它的代码行很简单。

我想养成创建有组织的代码的习惯,并且正在寻找有关组织此类代码的正确方法的建议。

我的代码的相关部分如下所示:

声明:

import UIKit
import Foundation
import CoreLocation

// Animation setup

var loading_00040: UIImage!
var loading_00041: UIImage!
var loading_00042: UIImage!
//and many more like this

在viewController中:

// Animation setup

    @IBOutlet weak var animationView: UIImageView!
    var checkmarkImages: [UIImage]!

    func setupAnimation(){
        loading_00040 = UIImage(named: "loading_00040.png")
        loading_00041 = UIImage(named: "loading_00041.png")
        loading_00042 = UIImage(named: "loading_00042.png")
        //and many more

        checkmarkImages = [loading_00040, loading_00041, loading_00042, loading_00043, loading_00044, loading_00045, loading_00046, loading_00047, loading_00048, loading_00049, loading_00050, loading_00051, loading_00052, loading_00053, loading_00054, loading_00055, loading_00056, loading_00057, loading_00058, loading_00059, loading_00060, loading_00061, loading_00062, loading_00063, loading_00064, loading_00065, loading_00066, loading_00067, loading_00068, loading_00069, loading_00070, loading_00071, loading_00072, loading_00073, loading_00074, loading_00075, loading_00076, loading_00077, loading_00078, loading_00079]
    }

    func playCheckmarkOnce(){

        animationView.animationImages = checkmarkImages
        animationView.animationDuration = 1
        animationView.animationRepeatCount = 1
        animationView.startAnimating()
    }

    func playCheckmarkAnimation(){
        setupAnimation()
        playCheckmarkOnce()
    }

然后我在fetchWeather类型方法中通过调用self.playCheckmarkAnimation()

从成功案例中播放它

重构后:

我尝试将所有这些代码放在一个名为Animations.swift的单独文件中,使用“类方法”。它看起来像这样,并且工作得很好:

import Foundation
import UIKit

var loading_00000: UIImage!
var loading_00001: UIImage!
var loading_00002: UIImage!
var loading_00003: UIImage!
var loading_00004: UIImage!
var loading_00005: UIImage!
var loading_00006: UIImage!
var loading_00007: UIImage!
var loading_00008: UIImage!
var loading_00009: UIImage!
var loading_00010: UIImage!
var loading_00011: UIImage!
var loading_00012: UIImage!
var loading_00013: UIImage!
var loading_00014: UIImage!
var loading_00015: UIImage!
var loading_00016: UIImage!
var loading_00017: UIImage!
var loading_00018: UIImage!
var loading_00019: UIImage!
var loading_00020: UIImage!
var loading_00021: UIImage!
var loading_00022: UIImage!
var loading_00023: UIImage!
var loading_00024: UIImage!
var loading_00025: UIImage!
var loading_00026: UIImage!
var loading_00027: UIImage!
var loading_00028: UIImage!
var loading_00029: UIImage!
var loading_00030: UIImage!
var loading_00031: UIImage!
var loading_00032: UIImage!
var loading_00033: UIImage!
var loading_00034: UIImage!
var loading_00035: UIImage!
var loading_00036: UIImage!
var loading_00037: UIImage!
var loading_00038: UIImage!
var loading_00039: UIImage!
var loading_00040: UIImage!
var loading_00041: UIImage!
var loading_00042: UIImage!
var loading_00043: UIImage!
var loading_00044: UIImage!
var loading_00045: UIImage!
var loading_00046: UIImage!
var loading_00047: UIImage!
var loading_00048: UIImage!
var loading_00049: UIImage!
var loading_00050: UIImage!
var loading_00051: UIImage!
var loading_00052: UIImage!
var loading_00053: UIImage!
var loading_00054: UIImage!
var loading_00055: UIImage!
var loading_00056: UIImage!
var loading_00057: UIImage!
var loading_00058: UIImage!
var loading_00059: UIImage!
var loading_00060: UIImage!
var loading_00061: UIImage!
var loading_00062: UIImage!
var loading_00063: UIImage!
var loading_00064: UIImage!
var loading_00065: UIImage!
var loading_00066: UIImage!
var loading_00067: UIImage!
var loading_00068: UIImage!
var loading_00069: UIImage!
var loading_00070: UIImage!
var loading_00071: UIImage!
var loading_00072: UIImage!
var loading_00073: UIImage!
var loading_00074: UIImage!
var loading_00075: UIImage!
var loading_00076: UIImage!
var loading_00077: UIImage!
var loading_00078: UIImage!
var loading_00079: UIImage!

var checkmarkImages: [UIImage]!

class Animations{

    class func setupAnimation(){
        loading_00040 = UIImage(named: "loading_00040.png")
        loading_00041 = UIImage(named: "loading_00041.png")
        loading_00042 = UIImage(named: "loading_00042.png")
        loading_00043 = UIImage(named: "loading_00043.png")
        loading_00044 = UIImage(named: "loading_00044.png")
        loading_00045 = UIImage(named: "loading_00045.png")
        loading_00046 = UIImage(named: "loading_00046.png")
        loading_00047 = UIImage(named: "loading_00047.png")
        loading_00048 = UIImage(named: "loading_00048.png")
        loading_00049 = UIImage(named: "loading_00049.png")
        loading_00050 = UIImage(named: "loading_00050.png")
        loading_00051 = UIImage(named: "loading_00051.png")
        loading_00052 = UIImage(named: "loading_00052.png")
        loading_00053 = UIImage(named: "loading_00053.png")
        loading_00054 = UIImage(named: "loading_00054.png")
        loading_00055 = UIImage(named: "loading_00055.png")
        loading_00056 = UIImage(named: "loading_00056.png")
        loading_00057 = UIImage(named: "loading_00057.png")
        loading_00058 = UIImage(named: "loading_00058.png")
        loading_00059 = UIImage(named: "loading_00059.png")
        loading_00060 = UIImage(named: "loading_00060.png")
        loading_00061 = UIImage(named: "loading_00061.png")
        loading_00062 = UIImage(named: "loading_00062.png")
        loading_00063 = UIImage(named: "loading_00063.png")
        loading_00064 = UIImage(named: "loading_00064.png")
        loading_00065 = UIImage(named: "loading_00065.png")
        loading_00066 = UIImage(named: "loading_00066.png")
        loading_00067 = UIImage(named: "loading_00067.png")
        loading_00068 = UIImage(named: "loading_00068.png")
        loading_00069 = UIImage(named: "loading_00069.png")
        loading_00070 = UIImage(named: "loading_00070.png")
        loading_00071 = UIImage(named: "loading_00071.png")
        loading_00072 = UIImage(named: "loading_00072.png")
        loading_00073 = UIImage(named: "loading_00073.png")
        loading_00074 = UIImage(named: "loading_00074.png")
        loading_00075 = UIImage(named: "loading_00075.png")
        loading_00076 = UIImage(named: "loading_00076.png")
        loading_00077 = UIImage(named: "loading_00077.png")
        loading_00078 = UIImage(named: "loading_00078.png")
        loading_00079 = UIImage(named: "loading_00079.png")

        checkmarkImages = [loading_00040, loading_00041, loading_00042, loading_00043, loading_00044, loading_00045, loading_00046, loading_00047, loading_00048, loading_00049, loading_00050, loading_00051, loading_00052, loading_00053, loading_00054, loading_00055, loading_00056, loading_00057, loading_00058, loading_00059, loading_00060, loading_00061, loading_00062, loading_00063, loading_00064, loading_00065, loading_00066, loading_00067, loading_00068, loading_00069, loading_00070, loading_00071, loading_00072, loading_00073, loading_00074, loading_00075, loading_00076, loading_00077, loading_00078, loading_00079]
    }

    class func playCheckmarkOnce(inImageView imageView: UIImageView){

        imageView.animationImages = checkmarkImages
        imageView.animationDuration = 1
        imageView.animationRepeatCount = 1
        imageView.startAnimating()
    }

    class func playCheckmarkAnimation(inImageView imageView: UIImageView){
        setupAnimation()
        playCheckmarkOnce(inImageView: imageView)
    }

}

这是组织这样的代码的正确方法还是有更好的方法?如果有人有任何好的资源,我将非常感激!

1 个答案:

答案 0 :(得分:2)

摆脱所有这些全局变量。你不需要任何一个。只需使用循环。

var checkmarkImages = [UIImage]()

func setupAnimation() {
    for i in 40...79 {
        let filename = String(format: "loading_%05d", i)
        if let image = UIImage(named: filename) {
            checkmarkImages.append(image)
        }
    }
}