Как изменить изображение за несколько секунд, когда пользователь нажмет кнопку, а затем быстро вернуться к исходному изображению? - PullRequest
0 голосов
/ 11 мая 2019

Привет, я новичок в программировании со Swift и я также довольно новичок в Stackoverflow. Как сделать кнопку, которая меняет изображение примерно на 5 секунд, а затем возвращается к исходному изображению, когда пользователь нажимает на кнопку?

Я пытался использовать этот код


       dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (Int64)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), {
           gauntletImage.image = UIImage(named: gauntlet["gauntlet2"]) //change back to the old image after 5 sec
       });

Но я продолжаю получать эти 2 ошибки:

Невозможно преобразовать значение типа Int в ожидаемый тип аргумента dispatch_time_t (он же UInt64)

и

Неоднозначное использование 'dispatch_get_main_queue ()'

Это мой код, который я использую.

@IBOutlet weak var gauntletImage: UIImageView!

    let gauntlet = ["gauntlet1", "gauntlet2", "gauntlet3", "gauntlet4", "gauntlet5", "gauntlet6",]


    @IBAction func stonePressed(_ sender: UIButton) {
        print(sender.tag)

        gauntletImage.image = UIImage(named: gauntlet[sender.tag - 1]) //change to the new image

        dispatch_after(dispatch_time(dispatch_time_t(DISPATCH_TIME_NOW), (Int64)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), {
            gauntletImage.image = UIImage(named: gauntlet["gauntlet2"]) //change back to the old image after 5 sec
        });
    }

1 Ответ

2 голосов
/ 11 мая 2019

Вы можете попробовать

@IBAction func stonePressed(_ sender: UIButton) { 
    // store old image assuming it has an initial image in storyboard
    let oldImg = gauntletImage.image!
    // set new image
    gauntletImage.image = UIImage(named: gauntlet[sender.tag - 1])  
    // wait 5 seconds 
    DispatchQueue.main.asyncAfter(deadline: .now() + 5 ) { 
        // set back old image
        self.gauntletImage.image = oldImg   
   }   

}

Пользователь может щелкнуть его несколько раз, чтобы вы могли

sender.isEnabled = false

при сохранении старого изображения и установке его обратно на true внутри отправки после блока

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