пытается поменять местами анимацию с помощью сегментированного элемента управления, но только первая анимация отображается для обоих сегментов - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь переключить две разные анимации, когда сегментированный элемент управления меняет значения. Однако либо анимация запускается для обоих разделов, либо анимация не воспроизводится.

вот мой код:

import UIKit

class ViewController: UIViewController {

let visibleFrames: [UIImage?] = [
    UIImage(named: "visible01.jpg"),
    UIImage(named: "visible02.jpg"),
    UIImage(named: "visible03.jpg"),
    UIImage(named: "visible04.jpg"),
    UIImage(named: "visible05.jpg"),
    UIImage(named: "visible06.jpg"),
    UIImage(named: "visible07.jpg"),
    UIImage(named: "visible08.jpg"),
    UIImage(named: "visible09.jpg"),
    UIImage(named: "visible10.jpg"),
    UIImage(named: "visible11.jpg"),
    UIImage(named: "visible12.jpg"),
    UIImage(named: "visible13.jpg"),
    UIImage(named: "visible14.jpg")
    ]

let infraredFrames: [UIImage?] = [
    UIImage(named: "infared01.jpg"),
    UIImage(named: "infared02.jpg"),
    UIImage(named: "infared03.jpg"),
    UIImage(named: "infared04.jpg"),
    UIImage(named: "infared05.jpg"),
    UIImage(named: "infared06.jpg"),
    UIImage(named: "infared07.jpg"),
    UIImage(named: "infared08.jpg"),
    UIImage(named: "infared09.jpg"),
    UIImage(named: "infared10.jpg"),
    UIImage(named: "infared11.jpg"),
    UIImage(named: "infared12.jpg"),
    UIImage(named: "infared13.jpg"),
    UIImage(named: "infared14.jpg")
]

var currentAnimationFrames: [UIImage?] = []

@IBOutlet weak var playbackSpeed:
    UILabel!
@IBOutlet weak var startStopButton:
    UIButton!
@IBOutlet weak var playbackStepper:
    UIStepper!
@IBOutlet weak var imgView:
    UIImageView!
@IBOutlet weak var chooseType:
    UISegmentedControl!

@IBAction func changeType(_ sender: Any) {
    if chooseType.selectedSegmentIndex == 0 {
        currentAnimationFrames = visibleFrames as [UIImage?]
    } else if chooseType.selectedSegmentIndex == 1 {
        currentAnimationFrames = infraredFrames as [UIImage?]
    }
}

@IBAction func changeSpeed(_ sender: Any) {
    imgView.animationDuration = Double(-(playbackStepper.value) + 6)

    imgView.startAnimating()

    playbackSpeed.text = "14 frames every " + String(playbackStepper.value) + " Seconds"

    if imgView.isAnimating{
        imgView.stopAnimating()

        startStopButton.setTitle("Play", for: UIControl.State())
    } else {
        imgView.startAnimating()

        startStopButton.setTitle("Stop", for: UIControl.State())
    }
}

@IBAction func playAnimation(_ sender: Any) {
    if imgView.isAnimating{
        imgView.stopAnimating()

        startStopButton.setTitle("Play", for: UIControl.State())
    } else {
        imgView.startAnimating()

        startStopButton.setTitle("Stop", for: UIControl.State())
    }

}

override func viewDidLoad() {
    super.viewDidLoad()
    playbackSpeed.text = "14 frames every 1.0 seconds"

    imgView.animationImages = currentAnimationFrames as [UIImage?] as? [UIImage]
    imgView.animationDuration = 2
}

}

также предполагается, что скорость анимации будет изменяться в зависимости от значения шага, но при увеличении шага она должна быть на go медленнее, но когда я меняю шагер, всегда кажется, что при движении он становится быстрее вверх. любая помощь с этим была бы великолепна!

...