Выполнить блок после появления UIImage на экране - PullRequest
0 голосов
/ 10 мая 2018

У меня есть UIImageView, и (якобы) после назначения вида новому изображению я переключаю поведение кнопки. Моя проблема в том, что поведение кнопок переключается до того, как изображение действительно появляется на экране. Ниже приведен пример того, что я смотрю:

import UIKit

class MyViewController: UIViewController {
    @IBOutlet weak var Image: UIImageView!
    @IBOutlet weak var Touch: UIButton!

    var touchCounter : UInt8 = 0
    var touchStart : Bool = true
    var touchCount : Bool = false

    func start() {
        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
            self.Image.image = UIImage(named: "MyStartImage")
            self.touchCount = false
        }
    }

    func end() {
        self.Image.image = nil
    }

    @IBAction func screenTouch(_ sender: Any) {
        if self.touchCount == true {
            self.touchCounter += 1
        } else if touchStart == true {
            self.touchStart = false
            self.touchCount = true
            self.start()
        } else {
            self.end()
        }
    }

Проблема в том, что если я просто нажимаю на экран, я никогда не вижу изображение. Есть ли какой-нибудь метод для выполнения блока кода после того, как изображение действительно появляется на экране? Я в идеале ищу решение, которое будет очень точным. Этот код в действительности выполняется в потоке реального времени, и я запрашиваю mach_absolute_time () между назначением представления изображения для моего изображения и переключением поведения кнопки.

1 Ответ

0 голосов
/ 10 мая 2018

Проблема в реализованной логике.Возможно, вы захотите сделать что-то вроде этого

var loadingImage = false

func start() {
    loadingImage = true
    DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
        self.Image.image = UIImage(named: "MyStartImage")
        self.loadingImage = false
    }
}

func end() {
    if loadingImage == false {
        Image.image = nil
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...