我正在尝试使用UIButton来启动和停止放置在imageview中的图像的动画序列。我正在使用Swift 3.0
这是我当前的代码:
import UIKit
class ViewController: UIViewController {
var selectedProgression : Int = 0
var loading_1: UIImage!
var loading_2: UIImage!
var loading_3: UIImage!
var animatedImage: UIImage!
@IBOutlet weak var progressionAnimation: UIImageView!
override func viewDidLoad() {
loading_1 = UIImage(named: "blues-1")
loading_2 = UIImage(named: "blues-2")
loading_3 = UIImage(named: "blues-3")
var images: [UIImage]!
images = [loading_1, loading_2, loading_3]
animatedImage = UIImage.animatedImage(with: images, duration: 3.0)
progressionAnimation.image = animatedImage
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
我已经看过,并且对如何执行此操作有一些想法,但是在将解决方案实际实现到我的代码中时会卡住:(
根据我发现的情况,我需要为按钮创建一个插座,以测量按钮是否被按下,并根据当前状态将按钮动作连接到startAnimating或stopAnimating。
我在Apple文档https://developer.apple.com/documentation/uikit/uiimageview/1621061-startanimating中找到了startAnimating和stopAnimating函数,但不确定如何在代码中实际实现它们。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
如何创建出口(here)。总结一下,打开助手编辑器(右上角的两个圆),然后在按住控件的同时将故事板中的按钮拖到Swift文件中。
您必须为此插座编写的IBAction看起来像这样:
@IBAction func starStopButtonPressed(_ sender: Any) {
//Check if the progressionAnimation UIImageView is already animating
if progressionAnimation.isAnimating {
progressionAnimation.stopAnimating() //If animating: stop animating
else {
progressionAnimation.startAnimating() //If not animating: start animating
}
}
在创建新变量时,请注意!
。如果您尝试在变量具有值之前使用它,则可能导致崩溃。
所以这个:
var images: [UIImage]!
images = [loading_1, loading_2, loading_3]
应该这样写:
var image: [UIImage] = [loading_1, loading_2, loading_3]
更少的线条使它看起来更干净,更安全。对loading_1-3 UIImage执行相同的操作,可以将其声明移至viewDidLoad
函数内部。
就像这样:
var animatedImage: UIImage!
animatedImage = UIImage.animatedImage(with: images, duration: 3.0)
progressionAnimation.image = animatedImage
如果这样写,它将既干净又安全:
progressionAnimation.image = UIImage.animatedImage(with: images, duration: 3.0)
答案 1 :(得分:0)
如果要使用开始或停止动画,请不要使用progreesionAnimation的图像。
progressionAnimation.animationImages = images
progressionAnimation.animationDuration = 1.0
progressionAnimation.animationRepeatCount = 100
progressionAnimation.startAnimating()
您应该使用您创建的图像数组中的animationImages。