首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >swift的UIView动画控件

问swift的UIView动画控件
EN

Stack Overflow用户
提问于 2020-08-04 09:09:08
回答 1查看 74关注 0票数 0

我正在用UIView动画功能测试一些东西,我对你对动画缺乏控制感到有点困惑。也许我错过了什么

代码语言:javascript
复制
          UIView.animate(
            withDuration: TimeInterval(Int.random(in: 20 ..< 25)),
            delay: TimeInterval(cloudConfig.delay),
            options: [
                UIView.AnimationOptions.curveLinear,
                UIView.AnimationOptions.repeat,
            ],
            animations: {
                self.view.transform = CGAffineTransform(translationX: width, y: 0)
                self.parent!.layoutIfNeeded() // important for the animation
            },
            completion: { _ in
                print("hurray I know when it ends, if it would fire on repeat as well :) it does not")
            }
        )

此动画只是将视图从左向右移动,并重复该过程。我似乎在api中找不到任何东西,它允许我寻找动画的特定时间并从那里开始。或者简单的事情,比如暂停和播放,或者获取当前的播放位置。有没有什么方法可以控制动画,它几乎就像css动画--零控制。

谢谢你的建议

EN

回答 1

Stack Overflow用户

发布于 2020-08-04 09:55:16

您正在使用的UIView类函数UIView.animate(withDuration:delay:options:animations:completion:)没有为您提供您所询问的任何内容(在动画中查找特定时间、暂停/恢复、获取当前动画位置的能力)。

也就是说,不同的UIView.animate()函数通过创建CABasicAnimation动画并在视图的层上运行它们来工作。可以使用其中一个UIView.animate()函数创建动画,然后进入结果层动画并执行您所描述的操作。它没有很好的文档,令人困惑和繁琐,但它是可能的。我在2015年写了一篇博文,展示了如何(用Objective-C) http://wareto.com/keyframe-view-animations来做这些事情

这篇文章的代码可以在https://github.com/DuncanMC/KeyframeViewAnimations上找到

可以通过操纵层的speed、beginTime和timeoffset属性来暂停、恢复或来回移动层动画。

我已经有几年没有看过这段代码了,也没有尝试在Swift中重写它,但如果你想知道如何做,它确实可以作为一个路线图。(请注意,它既复杂又繁琐。)

正如TeeJaay提到的,有一个较新的动画类,UIViewPropertyAnimator,它支持暂停和恢复动画,将它们移动到特定点等。如果你需要这些功能,我建议你去看看。你应该能够在网上找到它的教程。

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

https://stackoverflow.com/questions/63238898

复制
相关文章

相似问题

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