在iOS 13.x中重复/自动反转动画

时间:2019-10-24 20:59:57

标签: swift ios13 uiviewpropertyanimator

以前,您可以快速执行以下操作:

let animator = UIViewPropertyAnimator(duration: 0.25, curve: .easeIn) {
  UIView.setAnimationRepeatCount(Float.infinity)
  UIView.setAnimationRepeatAutoreverses(true)
  let transform = CATransform3DIdentity
  let rotate = CATransform3DRotate(transform, 45, 1, 1, 0)
  self.ex.layer.transform = rotate
}

但是,现在UIView.setAnimationRepeatCountUIView.setAnimationRepeatAutoreverses上有一条弃用消息。有人知道他们被替换了吗?我是否仍然可以使用UIViewPropertyAnimator,还是必须去CABasicAnimation之类的东西?

消息为:

  

'setAnimationRepeatCount'在iOS 13.0中已被弃用:改为使用基于块的动画API

     

'setAnimationRepeatAutoreverses'在iOS 13.0中已弃用:改为使用基于块的动画API

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

UIView.animate(withDuration: 0.25, delay: 0, options: [.autoreverse, .curveEaseIn, .repeat], animations: {
    let transform = CATransform3DIdentity
    let rotate = CATransform3DRotate(transform, 45, 1, 1, 0)
    self.ex.layer.transform = rotate
}, completion: nil)

对于所有可能的呼叫,您可以检查this link

此外,如果您确实需要UIViewPropertyAnimator,则它有一个similar init

 UIViewPropertyAnimator.runningPropertyAnimator(withDuration: 0.25, delay: 0, options: [.autoreverse, .curveEaseIn, .repeat], animations: {
    let transform = CATransform3DIdentity
    let rotate = CATransform3DRotate(transform, 45, 1, 1, 0)
    self.ex.layer.transform = rotate
})