gpt4 book ai didi

arrays - 动画数组结束于第一张图片

转载 作者:行者123 更新时间:2023-11-28 08:53:41 25 4
gpt4 key购买 nike

所以对于加载动画,我有一个 ImageView 循环浏览一堆图像。问题是,当它完成循环后,它会返回到数组的第一个图像,即使我希望它在最后一个图像上完成。我尝试将它设置为完成 block 中的最后一个图像(我目前注释掉了该行)但它不起作用。有什么建议么?谢谢!

import UIKit

class ViewController: UIViewController {

var logoImageView = UIImageView()
var labelImageView = UIImageView()

override func viewDidLoad() {
super.viewDidLoad()

self.navigationController?.navigationBarHidden = true

self.view.backgroundColor = UIColor(red: (253/255), green: (78/255), blue: (23/255), alpha: 1)

//sets up logo

logoImageView = UIImageView(frame: CGRectMake(self.view.frame.size.width / 2 - 65, self.view.frame.size.height / 2 - 165, 0, 0))
logoImageView.image = UIImage(named: "00")
logoImageView.backgroundColor = UIColor.clearColor()
self.view.addSubview(logoImageView)

//sets up ilmatic text label

labelImageView = UIImageView(frame: CGRectMake(self.view.frame.size.width / 2 - 70, self.view.frame.size.height / 2 - 7, 140, 14))
labelImageView.image = UIImage(named: "00_word_mark")
labelImageView.backgroundColor = UIColor.clearColor()
labelImageView.alpha = 0
self.view.addSubview(labelImageView)

//get bigger animation

self.getBigger()
}

func getBigger(){

UIView.animateWithDuration(2, animations: { () -> Void in

self.logoImageView.frame = CGRectMake(self.view.frame.size.width / 2 - 65, self.view.frame.size.height / 2 - 165, 130, 130)

}) { (completion) -> Void in

self.performSelector("animate", withObject: self, afterDelay: 0.5)
}

}

func animate() {

UIView.animateWithDuration(2, animations: { () -> Void in

let animationImages:[UIImage] = [UIImage(named: "00")!, UIImage(named: "02")!, UIImage(named: "03")!, UIImage(named: "04")!, UIImage(named: "05")!, UIImage(named: "06")!, UIImage(named: "07")!, UIImage(named: "08")!, UIImage(named: "09")!, UIImage(named: "10")!, UIImage(named: "11")!, UIImage(named: "12")!, UIImage(named: "13")!, UIImage(named: "14")!, UIImage(named: "15")!, UIImage(named: "16")!, UIImage(named: "17")!, UIImage(named: "18")!, UIImage(named: "19")!, UIImage(named: "20")!, UIImage(named: "21")!, UIImage(named: "22")!, UIImage(named: "23")!, UIImage(named: "24")!, UIImage(named: "25")!, UIImage(named: "26")!]

self.logoImageView.animationImages = animationImages
self.logoImageView.animationRepeatCount = 1
self.logoImageView.animationDuration = 2
self.logoImageView.startAnimating()

}) { (completion) -> Void in

UIView.animateWithDuration(4, animations: { () -> Void in

// self.logoImageView.image = UIImage(named: "26")

^^^THE ABOVE LINE DOESN T SET THE IMAGE BACK FOR SOME REASON


self.labelImageView.alpha = 0
self.labelImageView.alpha = 1

}, completion: { (completion) -> Void in

self.performSelector("pushToCreateVC", withObject: self, afterDelay: 2)
})

}

}

func pushToCreateVC() {

let createVC = CreateAccountViewController()
self.navigationController?.pushViewController(createVC, animated: true)

}


}

最佳答案

要更好地控制动画的特定帧,您需要实现自己的动画循环。基本上,创建一个重复计时器,在每一步从内存中加载 PNG,然后在 View 中显示它。永远不要使用 animationImages,因为如果动画太长或帧太大,它会吞噬你所有的应用程序内存并使你的系统崩溃。参见 this answer了解更多信息。

关于arrays - 动画数组结束于第一张图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33641001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com