ios – 在Swift中添加图像转换动画

前端之家收集整理的这篇文章主要介绍了ios – 在Swift中添加图像转换动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下是每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: "new-york-city.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
        }
}

将其实现为自定义图像视图会更好.

猜你在找的iOS相关文章