Анимация ImageView, циклический просмотр изображений
Поэтому я хочу анимировать UIImageView на экране загрузки, и мне сказали, что встроенный метод animationImages занимает много памяти и является плохим программированием, поэтому я не буду его использовать, у меня тоже были проблемы с ним, но это не главное.
Приведенный ниже код почти работает, но он анимируется слишком быстро, хотя я поставил 3 секунды.
func animate() {
UIView.animateWithDuration(3, animations: { () -> Void in
self.logoImageView.image = UIImage(named: "00")
self.logoImageView.image = UIImage(named: "02")
self.logoImageView.image = UIImage(named: "03")
self.logoImageView.image = UIImage(named: "04")
self.logoImageView.image = UIImage(named: "05")
self.logoImageView.image = UIImage(named: "06")
self.logoImageView.image = UIImage(named: "07")
self.logoImageView.image = UIImage(named: "08")
self.logoImageView.image = UIImage(named: "09")
self.logoImageView.image = UIImage(named: "10")
self.logoImageView.image = UIImage(named: "11")
self.logoImageView.image = UIImage(named: "12")
self.logoImageView.image = UIImage(named: "13")
self.logoImageView.image = UIImage(named: "14")
self.logoImageView.image = UIImage(named: "15")
self.logoImageView.image = UIImage(named: "16")
self.logoImageView.image = UIImage(named: "17")
self.logoImageView.image = UIImage(named: "18")
self.logoImageView.image = UIImage(named: "19")
self.logoImageView.image = UIImage(named: "20")
self.logoImageView.image = UIImage(named: "21")
self.logoImageView.image = UIImage(named: "22")
self.logoImageView.image = UIImage(named: "23")
self.logoImageView.image = UIImage(named: "24")
self.logoImageView.image = UIImage(named: "25")
self.logoImageView.image = UIImage(named: "26")
}) { (success) -> Void in
self.fadeInLabel()
}
Тем не менее, приведенный ниже код исчезает в метке приветствия и работает просто отлично, поэтому мне интересно, в чем проблема с вышеперечисленным. Спасибо за помощь!
func fadeInLabel() {
UIView.animateWithDuration(2, animations: { () -> Void in
self.labelImageView.alpha = 1
}) { (success) -> Void in
self.performSelector("pushToCreateVC", withObject: self, afterDelay: 1)
}
}
2 ответа
Если вы хотите анимировать изображения, вы можете использовать animationImages
собственностью UIImageView
self.logoImageView.animationImages = imagesListArray;
self.logoImageView.animationDuration = 3.0
self.logoImageView.startAnimating()
где imagesListArray
это массив изображений, которые вы хотите анимировать
ИЛИ ЖЕ
Если вы хотите анимировать изображения с помощью пользовательской анимации, вы можете использовать код ниже, где я использовал UIViewAnimationOptionTransitionFlipFromLeft
опция анимации. Ниже приведен код Obj-C, надеюсь, вы сможете отобразить семантику.
// in view Load
_slide = 0
[self changeSlide];
// Loop gallery
NSTimer *timer = [NSTimer timerWithTimeInterval:5.0f target:self selector:@selector(changeSlide) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
- (void)changeSlide
{
if(_slide > _galleryImages.count-1) _slide = 0;
UIImage *toImage = [UIImage imageNamed:_galleryImages[_slide]];
[UIView transitionWithView:_yourimageView
duration:0.6f
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
_yourimageView.image = toImage;
} completion:nil];
_slide++;
}
У меня была проблема с методом animationImages, возвращая imageView обратно к исходному изображению по завершении. Я не уверен, что есть лучший способ, но в итоге я использовал таймер, поэтому imageView сохраняет последнее изображение после завершения.
var counter = 0
var timer = NSTimer()
@IBAction func countButton(sender: UIButton) {
timer.invalidate()
timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "timerAction", userInfo: nil, repeats: true)
}
func timerAction() {
++counter
switch counter{
case 1 :
image1.image = UIImage(named:"Bird-1.gif")
case 2 :
image1.image = UIImage(named:"Bird-2.gif")
case 3 :
image1.image = UIImage(named:"Bird-3.gif")
case 4 :
image1.image = UIImage(named:"Bird-4.gif")
case 5 :
image1.image = UIImage(named:"Bird-5.gif")
case 6 :
counter = 0
timer.invalidate()
default :
print("Error")
}
}