首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIViewPropertyAnimator重复

UIViewPropertyAnimator重复
EN

Stack Overflow用户
提问于 2020-01-13 17:49:33
回答 2查看 1K关注 0票数 1

我看过以下StackOverflow问题中的答案,但似乎没有一个适合我:在完成块的执行过程中,程序没有再次执行动画,而是无限地释放出“完全”而没有动画化视图。

How can I repeat animation (using UIViewPropertyAnimator) certain number of times?

这是我的AnimatorFactory课程:

代码语言:javascript
复制
class AnimatorFactory {

    @discardableResult
    static func rotateRepeat(view: UIView) -> UIViewPropertyAnimator {
        let rotate = UIViewPropertyAnimator.runningPropertyAnimator(withDuration: 1.0, delay: 0.0, options: [.curveLinear], animations: {
            view.transform = CGAffineTransform(rotationAngle: .pi)
        }, completion: { _ in
            print("complete")
            self.rotateRepeat(view: view)
        })

        return rotate
    }

}

正如您预期的那样,在AnimatorFactory.rotateRepeat(view: <someView>)中调用它

然而,正如上面提到的那样,出现了这个问题。我所期望的是视图会反复旋转,直到有一段时间我决定改变或停止它;这正是我选择使用UIViewPropertyAnimator而不是UIView.animate(withDuration:animations)的原因。

那么创建交互式的、可重复的UIView动画的最佳方法是什么?非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-13 18:19:36

你的代码运行良好。问题是你的动画在第一次之后什么也不做。你说:

代码语言:javascript
复制
view.transform = CGAffineTransform(rotationAngle: .pi)

第一次,我们改变旋转从0到π。这是一个变化,所以有动画。但在那之后,我们就一遍又一遍地说“呆在π上”。我们在π,你说呆在那里,所以动画没有变化。

您希望每个动画都添加pi,而不是pi。

票数 2
EN

Stack Overflow用户

发布于 2020-01-13 18:41:47

正如@matt建议的那样,我只是一遍又一遍地将视图的旋转设置为.pi。因此,在完成块中,在再次启动动画之前,我已经将转换设置为.identity。

代码语言:javascript
复制
class AnimatorFactory {

    @discardableResult
    static func rotateRepeat(view: UIView) -> UIViewPropertyAnimator {
        let rotate = UIViewPropertyAnimator(duration: 1.0, curve: .linear)
        rotate.addAnimations {
            view.transform = CGAffineTransform(rotationAngle: .pi)
        }
        rotate.addCompletion{ _ in
            view.transform = .identity
            self.rotateRepeat(view: view)
        }
        rotate.startAnimation()

        return rotate
    }

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

https://stackoverflow.com/questions/59721594

复制
相关文章

相似问题

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