Как анимировать изменение изображения в UIImageView? - PullRequest
174 голосов
/ 14 мая 2010

У меня есть UIImageView с изображением. Теперь у меня есть совершенно новое изображение (графический файл), и я хочу отобразить его в этом UIImageView. Если я просто установлю

myImageView.image = newImage;

новое изображение видно сразу. Не оживляемый.

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

Ответы [ 12 ]

2 голосов
/ 14 февраля 2012

Начиная с iOS 5, это гораздо проще:

[newView setAlpha:0.0];
[UIView animateWithDuration:0.4 animations:^{
    [newView setAlpha:0.5];
}];
0 голосов
/ 07 декабря 2018

Ответ Владимира идеален, но любой, как я, ищет быстрое решение

Это решение работает для swift версии 4.2

var i = 0
    func animation(){
        let name = (i % 2 == 0) ? "1.png" : "2.png"
        myImageView.image = UIImage.init(named: name)
        let transition: CATransition = CATransition.init()
        transition.duration = 1.0
        transition.timingFunction = CAMediaTimingFunction.init(name: .easeInEaseOut)
        transition.type = .fade
        myImageView.layer.add(transition, forKey: nil)
        i += 1
    }

Вы можете вызывать этот метод из любого места. Это изменит изображение на следующее (изображение) с анимацией.

Для Swift Version 4.0 Использовать сильфонное решение

var i = 0
    func animationVersion4(){
        let name = (i % 2 == 0) ? "1.png" : "2.png"
        uiImage.image = UIImage.init(named: name)
        let transition: CATransition = CATransition.init()
        transition.duration = 1.0
        transition.timingFunction = CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseInEaseOut)
        transition.type = kCATransitionFade
        uiImage.layer.add(transition, forKey: nil)
        i += 1
    }
...