ios - 在 Swift 中添加图像过渡动画

标签 ios animation swift uiimage transition

下面是每 5 秒在不同图像之间自动转换的代码。我想为过渡添加动画,即淡入淡出、从左侧滚动等。我将如何在 Swift 中执行此操作?谢谢。

class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    imageView.animationImages = [
        UIImage(named: "brooklyn-bridge.jpg")!,
        UIImage(named: "grand-central-terminal.jpg")!,
        UIImage(named: "new-york-city.jpg")!,
        UIImage(named: "one-world-trade-center.jpg")!,
        UIImage(named: "rain.jpg")!,
        UIImage(named: "wall-street.jpg")!]

    imageView.animationDuration = 25.0
    imageView.startAnimating()
}

最佳答案

class ViewController: UIViewController {
        @IBOutlet weak var imageView: UIImageView!

        let images = [
                UIImage(named: "brooklyn-bridge.jpg")!,
                UIImage(named: "grand-central-terminal.jpg")!,
                UIImage(named: "new-york-city.jpg"),
                UIImage(named: "one-world-trade-center.jpg")!,
                UIImage(named: "rain.jpg")!,
                UIImage(named: "wall-street.jpg")!]
        var index = 0
        let animationDuration: NSTimeInterval = 0.25
        let switchingInterval: NSTimeInterval = 3

        override func viewDidLoad() {
                super.viewDidLoad()

                imageView.image = images[index++]
                animateImageView()
        }

        func animateImageView() {
                CATransaction.begin()

                CATransaction.setAnimationDuration(animationDuration)
                CATransaction.setCompletionBlock {
                        let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(self.switchingInterval * NSTimeInterval(NSEC_PER_SEC)))
                        dispatch_after(delay, dispatch_get_main_queue()) {
                                self.animateImageView()
                        }
                }

                let transition = CATransition()
                transition.type = kCATransitionFade
                /*
                transition.type = kCATransitionPush
                transition.subtype = kCATransitionFromRight
                */
                imageView.layer.addAnimation(transition, forKey: kCATransition)
                imageView.image = images[index]

                CATransaction.commit()

                index = index < images.count - 1 ? index + 1 : 0
        }
}

将其实现为自定义 ImageView 会更好。

关于ios - 在 Swift 中添加图像过渡动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26898955/

相关文章:

iphone - 将音频录制到文件并从中播放

ios - 单击并拖动 CGContext 绘图以将其放置在屏幕上的任意位置

javascript - 基本 2D 人形火柴人的逆向运动学原理

javascript - 如何延迟CSS上的动画?我试过动画延迟。不起作用

ios - 我将如何更改表情符号的颜色?

ios - TableView 静态单元格 : how to add constraint to bottom to the cell

ios - 保存选项设置的状态(cocos2d)

c# - 如何在unity中动画回到第一个位置?

ios - 使用 UIButton 访问一组随机音频对象

ios - swift 中的 Revmob 插页式广告