一尘不染

Swift动画WithWithration语法是什么?

swift

我正在将一个较旧的应用程序移植到Xcode 7 beta,并且我的动画出现错误:

无法使用类型为’(Double,delay:Double,options:nil,animations:()->
_,completion:nil)的参数列表调用’animateWithDuration’

这是代码:

 UIView.animateWithDuration(0.5, delay: 0.3, options: nil, animations: {
      self.username.center.x += self.view.bounds.width
    }, completion: nil)

这在Xcode 6中有效,因此我假设这是Swift中的更新。所以我的问题是:

animateWithDuration的Swift 3语法是什么?


阅读 259

收藏
2020-07-07

共1个答案

一尘不染

Swift 3/4语法

这是Swift 3语法的更新:

UIView.animate(withDuration: 0.5, delay: 0.3, options: [.repeat, .curveEaseOut, .autoreverse], animations: {
    self.username.center.x += self.view.bounds.width
}, completion: nil)

如果您需要添加完成处理程序,只需添加一个闭包,如下所示:

UIView.animate(withDuration: 0.5, delay: 0.3, options: [.repeat, .curveEaseOut, .autoreverse], animations: {
    // animation stuff      
}, completion: { _ in
    // do stuff once animation is complete
})

旧答案:

事实证明,这是一个非常简单的解决方案,只需将更options: nil改为即可options: []

Swift 2.2语法:

UIView.animateWithDuration(0.5, delay: 0.3, options: [], animations: {
      self.username.center.x += self.view.bounds.width
    }, completion: nil)

发生了什么变化?

Swift 2摆脱了C-
Style逗号分隔的选项列表,而支持选项集(请参阅:OptionSetType)。在我最初的问题中,我传入nil了我的选项,该选项在Swift
2之前有效。通过更新的语法,我们现在看到一个空选项列表作为一个空集:[]

带有某些选项的animateWithDuration的示例如下:

 UIView.animateWithDuration(0.5, delay: 0.3, options: [.Repeat, .CurveEaseOut, .Autoreverse], animations: {
      self.username.center.x += self.view.bounds.width
    }, completion: nil)
2020-07-07