あなたは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
おかげで、私は多分、私はそれを適用するのに何かが欠けている、あなたの答えを試みたが、私はplayroundと私の答えを更新します私の質問 – biggreentree
を編集しました。 –
絶対に素晴らしい!効果は私が探していたものとまったく同じです!最後の質問ですが、私が将来的にマニュアルスワイプを追加したい場合は、ページビューコントローラーを使用する方が良いでしょうか? – biggreentree