2015-11-16 5 views
5

UIImageViewを読み込み画面でアニメーション化したいのですが、組み込みの「animationImages」メソッドが大量のメモリを消費し、プログラミングが悪いので使用しないと言われていますそれにも問題がありましたが、その点以外にもあります。画像をループするImageViewアニメーション

以下のコードはほとんど動作しますが、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) 
    } 

} 
+0

上記のタイマー方法は優れていますが、まだ全話ではありません。http://stackoverflow.com/a/34232973/763355 – MoDJ

答えて

3

uは画像をアニメーション化する場合はuはuが

OR

をアニメーション化するimagesListArrayは、画像の配列であるUIImageView

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

animationImagesプロパティを使用することができますあなたは私のアニメーションをしたい場合私はUIViewAnimationOptionTransitionFlipFromLeftアニメーションオプションを使用したコードの下で使用することができます.Belowcodeは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++; 

} 
0

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") 
    } 
} 
関連する問題