使用播放器播放动画图像。容易与任何能绘制 UIImage 的东西相关联。
支持 速度、跳过帧、显示链接帧间隔 配置。需要时自动预加载和清除缓存。
更新到 Swift 2.2,并优化了一些代码。
需要 Swift 2.2。最好是使用框架。
在大多数场景中,开发者将异步加载图像数据,而不是其他方式。
import XLYAnimatedImage
// get data
let data = ... // load from some where, network or ...
// scale has a default value equals to screen scale, or you can specify it.
let animatedImage = AnimatedDataImage(data: data, scale: default)
// setup player and keep a reference.
let player = AnimatedImagePlayer(display: {[weak self] image, index in
self?.image = image
},
stop: {[weak self] in
self?.image = nil
})
// setup image
player.image = animatedImage
// set replay to true will replay animatedImage even if it's same object.
player.setImage(image, replay: true)
// config player
player.onTimeElapse = { [unowned self] time in
self.timeSlider.value = Float(time / self.imageView.xly_animatedImagePlayer!.totalTime)
}
player.speed = 2
player.skipFrames = true
player.displayLinkFrameInterval = 2
或者使用 UIImageView 的辅助扩展方法。
// set image
imageView.xly_setAnimatedImage(animatedImage, replay: true)
// get player and then config as you wish
let player = imageView.xly_animatedImagePlayer
更多请参见演示。
AnimatedImage
的实现,并可以用播放器播放。paused
、speed
、skipFrames
、displayLinkFrameInterval
配置。frameIndex
用于当前图像帧索引,time
用于当前播放时间。moveToFrameAtIndex(_:)
到达任何索引,也可以通过调用 moveToTime(_:)
到达任何时间。display
回调来显示帧,使用 stop
回调来停止播放图像,并使用 onTimeElapse
通知时间改变。任何时候,您都可以更改回调和图像,也可以通过设置参数 'replay' 为 true
来刷新图像的播放。
目前不支持 apng,因为我正在等待苹果在 iOS 设备上支持它。如果您需要它,您可以自己编写实现,这并不困难。