问题
I would like a simple image array animation to run when a button is clicked. The below code works well, but I would like the last image in the array to be set as the imageview image after. How would I change the image on completion instead of it going back to the original?
let imageArray = [UIImage(named: "Frog-1.gif")!, UIImage(named: "Frog-2.gif")!, UIImage(named: "Frog-3.gif")!, UIImage(named: "Frog-4.gif")!]
@IBOutlet var imageView1: UIImageView!
@IBAction func button1(sender: UIButton) {
imageView1.animationImages = imageArray
imageView1.animationDuration = 1.0
imageView1.animationRepeatCount = 1
imageView1.startAnimating()
}
回答1:
Add #selector() and @objc at last solution and try:
When the button is pressed you can call a function with a delay
self.performSelector(#selector(afterAnimation), withObject: nil, afterDelay: imageView1.animationDuration)
Then stop the animation and add the last image of imageArray to the imageView in the afterAnimation function
@objc func afterAnimation() {
imageView1.stopAnimating()
imageView1.image = imageArray.last
}
来源:https://stackoverflow.com/questions/33740387/how-to-do-imageview-startanimating-with-completion-in-swift