如何使用UIViewPropertyAnimator使视图旋转360度

3

如果我想通过UIViewPropertyAnimator利用用户交互动画,如何使对象顺时针旋转360度?

// Does not animate
let animator = UIViewPropertyAnimator(duration: 2, curve: .linear) {
    let radians = Angle(360).radians // 6.28318530717959
    view.transform = view.transform.rotated(by: CGFloat(radians))
}
// (Using RxSwift to handle the user interaction via UISlider, 
// but that can be ignored as an implementation detail for this question.)
let scrubs = slider.rx.value.asDriver()
scrubs.drive(onNext: { (value:Float) -> Void in
    animator.fractionComplete = CGFloat(value)
})
1个回答

6

幸运的是,UIViewPropertyAnimator使这非常简单(如果不是稍微有些hackish?)。只需创建两个180度的动画:

let animator = UIViewPropertyAnimator(duration: 2, curve: .linear) {
    let radians = Angle(180).radians // 3.14159265358979
    view.transform = view.transform.rotated(by: CGFloat(radians))
}
animator.addAnimations {
    let radians = Angle(180).radians
    view.transform = view.transform.rotated(by: radians)
}

这将像一个动画,可以通过fractionComplete来启动、停止、暂停、完成或“擦拭”。 示例游乐场

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接