Как изменить изображение в представлении UIimage со счетчика - PullRequest
0 голосов
/ 24 марта 2020

действительно борется за то, как я буду менять изображение каждые 2 минуты на основе счетчика / таймера, который я создал. Я хотел бы, чтобы представление UIImage отображало изображение в течение 2 минут, а затем переключалось на другое изображение, затем другое изображение, затем другое изображение, на основе моего счетчика. Вот код счетчика.

@objc func runTimer() {
    counter += 0.1
    // HH:MM:SS:
    let flooredCounter = Int(floor(counter))
    let hour = flooredCounter / 3600
    let minute = (flooredCounter % 3600) / 60
    var minuteString = "\(minute)"
    if minute < 10 {
        minuteString = "0\(minute)"
    }
    let second = (flooredCounter % 3600) % 60
    var secondString = "\(second)"
    if second < 10 {
        secondString = "0\(second)"
    }
    _ = String(format: "%.1f", counter).components(separatedBy: ".").last!

    timerLabel.text = "\(hour):\(minuteString):\(secondString)"

здесь кнопки пуска, паузы и сброса

@IBAction func startWorkingAction(_ sender: Any)
{
    if !isTimerRunning {
        timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(runTimer), userInfo: nil, repeats: true)

        isTimerRunning = true

        resetButton.isEnabled = false
        resetButton.alpha = 0.2

        pauseButton.isEnabled = true
        pauseButton.alpha = 1.0

        startWorkingButton.isEnabled = false
        startWorkingButton.alpha = 0.2

        AudioServicesPlaySystemSound(1519)
    }

}
@IBAction func pauseAction(_ sender: Any)
{
    resetButton.isEnabled = true
    resetButton.alpha = 1.0

    startWorkingButton.isEnabled = true
    startWorkingButton.alpha = 1.0

    pauseButton.isEnabled = false
    pauseButton.alpha = 0.2

    isTimerRunning = false
    timer.invalidate()

    AudioServicesPlaySystemSound(1520)
}
@IBAction func resetAction(_ sender: Any)
{
    timer.invalidate()
    isTimerRunning = false
    counter = 0.0

    timerLabel.text = "0:00:00"

    resetButton.isEnabled = false
    resetButton.alpha = 0.0

    pauseButton.isEnabled = false
    pauseButton.alpha = 0.0

    startWorkingButton.isEnabled = true
    startWorkingButton.alpha = 1.0

    AudioServicesPlaySystemSound(1520)

}

, а выход для uiimage

  @IBOutlet weak var treeGrow: UIImageView!

Любой Помощь будет принята с благодарностью. Спасибо!

1 Ответ

3 голосов
/ 24 марта 2020

Это на самом деле довольно легко решить. Вот как я использую его в своем приложении:

//MARK: ImagePreviewAnimation

// timer for imagePreview
    var timer: Timer?
    var currentImage: UIImage?
    var currentImageIndex = 0

    func startImagePreviewAnimation(){
        timer = Timer.scheduledTimer(timeInterval: 1.6, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
    }

    @objc func timerAction(){
        currentImageIndex = (currentImageIndex + 1) % Constants.ImageList.images.count
        UIView.transition(with: self.imagePreview, duration: 0.5, options: .transitionCrossDissolve, animations: {
            self.imagePreview.image = Constants.ImageList.images[self.currentImageIndex]
            self.currentImage = self.imagePreview.image
        })
    }

Это меняет изображение каждые 1.6 секунды с мягким переходом. Важно знать, что вам следует позвонить timer.invalidate(), если вы go, позвоните другому ViewController.

Constants.ImageList - это просто список, содержащий все изображения. С помощью хитрости вызова % список всегда перезапускается при достижении конца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...