UIImageView 在动画之间淡入淡出
Posted
技术标签:
【中文标题】UIImageView 在动画之间淡入淡出【英文标题】:UIImageView fade between animation 【发布时间】:2015-08-28 13:08:59 【问题描述】:我需要在 UIImageView 中的图像之间制作动画。因此,经过研究,我得出了这门课:
import UIKit
class GzImageView: UIImageView
var imageCollection:[UIImage]? //images to show
var count:Int = 0 // images counter
func animate()
//when Counter get last image set it to the first one
if self.count >= self.imageCollection?.count
self.count = 0
//get the image to show
let img = self.imageCollection![self.count]
//animate the transition
UIView.transitionWithView(self,
duration: 1.0,
options: UIViewAnimationOptions.TransitionCrossDissolve,
animations: self.image = img ) //set the new image
(Bool) -> Void in
self.animate() //Direct recursion
self.count++
我就是这样使用它的:
let imgView = GzImageView(frame: CGRectMake(30, 100, 200, 200))
imgView.imageCollection = ["cake.png","bag.png","hat.png"].map name -> UIImage in UIImage(named:name)!
imgView.animate()
当我用作 UIView 子视图时它工作正常。但我需要将其用作 UICollectionViewCell 子视图。作为 UICollectionViewCell 子视图,它不能正常工作。当我更改为其他 UIView 并返回 UICollectionView 时,图像开始快速闪烁。
我无法找出问题所在,所以我正在寻找另一种方法来获得此功能。
你们还有其他方法可以做到这一点或知道如何解决吗?
【问题讨论】:
【参考方案1】:对于 Swift 3.0.1 试试 https://***.com/a/42710002/4935811:
UIView.transition(with: self.imageView,
duration:0.5,
options: .transitionCrossDissolve,
animations: self.imageView.image = newImage ,
completion: nil)
参考:https://gist.github.com/licvido/bc22343cacfa3a8ccf88
【讨论】:
【参考方案2】:您可以通过这种方式轻松完成:
var animationDuration = 3;
imageView.animationImages = imageSet;
imageView.animationDuration = NSTimeInterval(animationDuration);
imageView.startAnimating();
这里是 UIImage 对象数组中的 imageSet。
【讨论】:
它工作正常,但是这段代码没有动画之间的淡入淡出效果。你知道在这个实现中添加这个效果吗?以上是关于UIImageView 在动画之间淡入淡出的主要内容,如果未能解决你的问题,请参考以下文章
Swift3 淡入/淡出或平滑过渡 UIImageView animationImages
looper.js 插件 - 交叉淡入淡出动画之间不可见的图像