XLYAnimatedImage 1.1.0

XLYAnimatedImage 1.1.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布时间最新发布2016年4月
SPM支持 SPM

kaizeiyimi 维护。



  • 作者:
  • kaizei

XLYAnimatedImage

使用播放器播放动画图像。容易与任何能绘制 UIImage 的东西相关联。

支持 速度跳过帧显示链接帧间隔 配置。需要时自动预加载和清除缓存。

更新

更新到 Swift 2.2,并优化了一些代码。

Swift 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 的实现,并可以用播放器播放。
  • 播放器支持 pausedspeedskipFramesdisplayLinkFrameInterval 配置。
  • 播放器提供了 frameIndex 用于当前图像帧索引,time 用于当前播放时间。
  • 播放器可以通过调用 moveToFrameAtIndex(_:) 到达任何索引,也可以通过调用 moveToTime(_:) 到达任何时间。
  • 播放器使用 display 回调来显示帧,使用 stop 回调来停止播放图像,并使用 onTimeElapse 通知时间改变。
  • 任何时候,您都可以更改回调和图像,也可以通过设置参数 'replay' 为 true 来刷新图像的播放。

    更多信息

    目前不支持 apng,因为我正在等待苹果在 iOS 设备上支持它。如果您需要它,您可以自己编写实现,这并不困难。