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

Cannot invoke 'animateWithDuration' with an argument list of type '(Double, delay: Double, options: nil, animations: () -> _, completion: nil)'

以下是代码:

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

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

What's the Swift 3 syntax for animateWithDuration?

推荐答案

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
})

Old Answer:

事实证明,这是一个非常简单的修复方法,只需将options: nil改为options: [].

Swift 2.2 Syntax:

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

什么改变了?

Swift 2放弃了C样式的逗号分隔选项列表,转而使用选项集(参见: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)

Swift相关问答推荐

Vapor, fluent 使用 PostgreSQL 保存/创建复杂模型

Xcode 13.3 将函数调用更改为属性访问

Xcode 11.4 编译错误'缺少包产品<包名称>'

SwiftUI 中的 .primary 和 .secondary colored颜色 是什么?

来自 ObservableObject 的绑定值

SwiftUI 中有没有一种模糊背景的方法?

在文本中添加无限行(SwiftUI)

SwiftUI 中的 @Binding 和 ForEach

在 SwiftUI 中有条件地使用视图

如何解决:“keyWindow”在 iOS 13.0 中已弃用

SwiftUI:将多个 BindableObjects 放入环境

如何在 SwiftUI 的 ScrollView 中创建多行文本?

SwiftUI 是否向后兼容 iOS 12.x 及更早版本?

Xcode 11:画布不显示

将 Apple 表情符号(字符串)转换为 UIImage

Xcode 和 Swift - 没有标题栏但有关闭、最小化和调整大小按钮的窗口

Swift 中的 CGSize sizeWithAttributes

为什么以及何时在 Swift 中对 Array 使用惰性?

UIImageJPEGRepresentation 已被实例方法 UIImage.jpegData(compressionQuality:) 替换

如何使关联值相等的 Swift 枚举