以下是每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 } }
将其实现为自定义图像视图会更好.