首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >暂停时调用UIViewPropertyAnimator完成

暂停时调用UIViewPropertyAnimator完成
EN

Stack Overflow用户
提问于 2019-01-16 23:41:30
回答 2查看 3.5K关注 0票数 5

我没有经常使用UIViewPropertyAnimator (仍然是一个老式的积木家伙),我看到了一些我无法解释的行为,而且这些文档并没有真正提供任何洞察力。

为什么动画师的完成块会被finalPosition of .end调用,即使动画师在启动后立即暂停呢?

代码语言:javascript
复制
let view = UIView()
let animator = UIViewPropertyAnimator(duration: 4, curve: .linear, animations: {
    view.alpha = 0
})

animator.addCompletion { position in
    print("done")
    switch position {
    case .start: print("start")
    case .current: print("current")
    case .end: print("end")
    }
}

animator.startAnimation()
print("starting")
animator.pauseAnimation()
print("pausing")

输出:

代码语言:javascript
复制
starting
pausing
done
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-17 04:42:08

正如@matt所暗示的,问题是您的视图不在可见的UIWindow中,因此动画立即完成。如果注释掉animator.pauseAnimation()语句,您将得到相同的输出。

如果您使用的是操场,则可以通过将view设置为操场页面的liveView来修复这个问题:

代码语言:javascript
复制
import PlaygroundSupport
import UIKit

let view = UIView()
PlaygroundPage.current.liveView = view

// etc.
票数 3
EN

Stack Overflow用户

发布于 2019-01-17 00:01:09

如果您从苹果的开发人员站点阅读addCompletion文档,其中一个参数是finalPosition。您可以使用该值来确定动画是在开头、结尾还是在中间某个地方停止。调用pauseAnimation将触发位于中间位置的某个完成块。

当动画完成时要执行的块。此块没有返回值,并接受以下参数: finalPosition动画的结尾位置。使用此值确定动画是在开头、结尾还是在中间某个地方停止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54227041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档