2015-11-16 12 views
5

Bu yüzden bir yük ekranında bir UIImageView animasyonu yapmak istiyorum ve yerleşik "animationImages" yönteminin çok fazla bellek kapladığı ve kötü programlamanın kullanılmayacağı söylendi. Ben de bununla ilgili meselelerim vardı ama bu konuya ek olarak.ImageView animasyonu, resimler arasında döngü

Aşağıdaki kod neredeyse çalışıyor, ancak 3 saniye koymamıza rağmen çok hızlı hareket ediyor.

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() 
    } 

Ancak, aşağıda kod yüzden yukarıdaki konudur merak karşılama etikette kaybolur ve gayet güzel çalışıyor. Yardım için teşekkürler! u görüntüleri animasyon istiyorsanız

func fadeInLabel() { 

    UIView.animateWithDuration(2, animations: {() -> Void in 

     self.labelImageView.alpha = 1 

     }) { (success) -> Void in 

      self.performSelector("pushToCreateVC", withObject: self, afterDelay: 1) 
    } 

} 
+0

Yukarıda belirtilen zamanlayıcı yöntemi daha iyi, ancak yine de tüm öykü değil: http://stackoverflow.com/a/34232973/763355 – MoDJ

cevap

3

u UIImageView

self.logoImageView.animationImages = imagesListArray; 
self.logoImageView.animationDuration = 3.0 
self.logoImageView.startAnimating() 

ait animationImages özelliğini kullanabilirsiniz nerede imagesListArray u

VEYA

canlandırmak istediğiniz görüntülerin dizisi Eğer im'i canlandırmak istersen özel animasyon ile yaşları UIViewAnimationOptionTransitionFlipFromLeft animasyon seçeneği kullandığım kodun altında kullanabilirsiniz.Belowcode Obj-C, umarım semantik harita edebilirsiniz.

// 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++; 

} 
0

Animasyon görüntüsü yöntemini kullanarak, görüntüyü tamamlandığında orijinal görüntüye geri döndürerek bir sorun yaşadım. Daha iyi bir yol olup olmadığından emin değilim, ancak bir zamanlayıcı kullanarak sona erdim, bu yüzden imageView bir kez son görüntüyü tamamlıyor.

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") 
    } 
}