【问题标题】:Background gif position transition to other ViewController背景 gif 位置过渡到其他 ViewController
【发布时间】:2017-11-18 23:58:24
【问题描述】:

所以问题是:我有一个 gif 背景,它是通过这个家伙 SwiftGif Link 创建的扩展方法设置的

我使用方法 backgroundAnimated.loadGif(name: "giphy") 加载当前 gif,并将 gif 解析到图像上,然后将其填充到数组中,随后调用 UIImage 类的 animatedImage 方法。

但问题是 - 我想在通过 segue 转换到下一个 ViewController 时保持循环 gif 的状态。 例如,如果我有鸟飞过屏幕中心,然后随机有人按下按钮转到下一个 ViewController,则 gif 将重置并从头开始。请帮助我找到解决方案

我想到了解决办法:

  • 通过 prepareForSegue 将框架的坐标传递到其他 ViewController
    问题是 - myBackground.frame 始终为零坐标,所以我不知道如何获取它最后停止的帧
  • 从 CGRect 初始帧位置开始 问题是 - 无法猜测按下转换按钮时已停止的帧的位置。
  • 为所有 ViewController 制作一个 gif 背景(不知道如何实现这样的东西)

【问题讨论】:

    标签: ios swift animation background gif


    【解决方案1】:

    你确定你的 myBackground UIImageView 正在改变框架。我不这么认为。

    我猜你的 gif 正在改变它的关键帧。所以你需要存储停止的关键帧的索引并从关键帧开始你的 gif。

    【讨论】:

    • 复杂之处在于,将 gif 划分为图像并放入带有延迟和东西的数组中,以便可以将其传递给 UIView.animatedImage 方法,该方法将一系列解析图像动画化为数组,而我不这样做'不知道如何从动画图像最后处理的图像开始。如果您有任何想法,我将不胜感激
    • 我猜底层的 gif 实现是基于 CAAnimation 的,通过查看这个 wiki github.com/bahlo/SwiftGif/wiki/Extended-use 。所以我认为你可以使用 CALayer timeOffset 来设置从前停止的 timeOffset 开始。关于timeOffset的详细信息:ronnqvi.st/controlling-animation-timing
    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    相关资源
    最近更新 更多