2016-10-27 9 views
0

Swift 3.0でこのスライドショーにアニメーション効果を適用するにはどうすればよいですか? animationWithDurationメソッドに関連するアニメーション効果を見つけることができません。UIImageViewスライドショーにアニメーション効果を適用する方法

let image1 = UIImage(named: "image1")! 
    let image2 = UIImage(named: "image2")! 
    let image3 = UIImage(named: "image3")! 


    var imagesArray : [UIImage] = [] 



    override func viewDidLoad() { 
     super.viewDidLoad() 


     imagesArray = [image1, image2, image3] 

     myView.clipsToBounds = true 


     myView.animationImages = imagesArray 
     myView.animationDuration = 10.0 
     myView.animationRepeatCount = 0 
     myView.startAnimating() 

    } 

答えて

0

あなたはUIImageViewのフレームアニメーションでビルドを使用しているように見えます。これは、アニメーションgifのように画像を循環するように設計されています。実際にはそれよりも洗練されたアニメーションはありません。トランジションエフェクトが必要な場合は、2つのイメージビューを交互に使用し、UIViewアニメーションメソッドを使用してそれらを切り替えることができます。これは単にアルファを操作することによってクロスフェードを行います:

var images = [UIImage]() 
    var currentImageindex = 0 
    func animateImageViews() { 
     swap(&firstImageView, &secondImageView) 
     secondImageView.image = images[currentImageindex] 
     currentImageindex = (currentImageindex + 1) % images.count 
     UIView.animate(withDuration: 1, animations: { 
      self.firstImageView.alpha = 0 
      self.secondImageView.alpha = 1 
      }, completion: { _ in 
      self.animateImageViews() 
     }) 
    } 

これはどのように動作するのかを示す遊び場です。 1.pngと2.pngという名前のリソースフォルダに2つのイメージをドロップする必要があります。このようにビューフレームを設定することは恐ろしいプログラミング練習であることに注意しましょう。あなたの実際のコードでインターフェイスビルダーとautolayoutを使用してください。あなたの助けのための

import PlaygroundSupport 
    import UIKit 

    class Demo: UIViewController { 
     let button = UIButton() 


     var firstImageView = UIImageView() 
     var secondImageView = UIImageView() 
     var images = [UIImage]() 
     var currentImageindex = 0 
     override func viewDidLoad() { 
      view.addSubview(firstImageView) 
      view.addSubview(secondImageView) 
      images.append(UIImage(named: "1.png")!) 
      images.append(UIImage(named: "2.png")!) 
      firstImageView.image = images[0] 
      secondImageView.image = images[1] 
     } 

     override func viewDidLayoutSubviews() { 
      super.viewDidLayoutSubviews() 
      firstImageView.frame = view.frame 
      secondImageView.frame = view.frame 
     } 

     override func viewDidAppear(_ animated: Bool) { 
      animateImageViews() 
     } 

     func animateImageViews() { 
      swap(&firstImageView, &secondImageView) 
      secondImageView.image = images[currentImageindex] 
      currentImageindex = (currentImageindex + 1) % images.count 
      UIView.animate(withDuration: 1, animations: { 
       self.firstImageView.alpha = 0 
       self.secondImageView.alpha = 1 
       }, completion: { _ in 
       self.animateImageViews() 
      }) 
     } 
    } 
    let viewcontroller = Demo() 
    viewcontroller.view.frame = CGRect(x: 0, y: 0, width: 100, height: 100) 
    PlaygroundPage.current.liveView = viewcontroller.view 
+0

おかげで、私は多分、私はそれを適用するのに何かが欠けている、あなたの答えを試みたが、私はplayroundと私の答えを更新します私の質問 – biggreentree

+0

を編集しました。 –

+0

絶対に素晴らしい!効果は私が探していたものとまったく同じです!最後の質問ですが、私が将来的にマニュアルスワイプを追加したい場合は、ページビューコントローラーを使用する方が良いでしょうか? – biggreentree

関連する問題