在CGAffineTransformMakeTranslation中放入变量后,XCode向我显示“调用中的额外参数'延迟'。 知道为什么吗?认为这是一个错误。
var direction = 0
UIView.animateWithDuration(0.2, delay: 0.0, options: UIViewAnimationOptions.Repeat, animations: {
self.NameInput.transform = CGAffineTransformMakeTranslation(5*direction, 0);
}, completion: nil)
答案 0 :(得分:6)
问题是Swift编译器有错误的错误消息。真的,非常糟糕的错误信息。
以下是修复:
var direction = 0
UIView.animateWithDuration(0.2, delay: 0.0, options: UIViewAnimationOptions.Repeat, animations: {
self.NameInput.transform = CGAffineTransformMakeTranslation(5*CGFloat(direction), 0)
// ^^^^^^^^ ^
}, completion: nil)
由于类型不正确,编译器无法编译animations
块。所以它不知道块的类型。它替换了块的错误类型。然后它试图找到一个animateWithDuration
重载,它将该错误类型作为参数。没有一个,所以它任意选择了一个过载。具体来说,它选择了animateWithDuration(_,animations:)
重载,它没有采用delay
参数。因此,您收到的错误消息。
答案 1 :(得分:0)
这里的问题是Int和CGFloat类型。您将整数值乘以一些未定义的CGFloat值。所以,如果你确定持续时间是CGFloat类型,你的问题就会消失。
var direction: CGFloat = 0
UIView.animateWithDuration(0.2, delay: 0.0, options: UIViewAnimationOptions.Repeat, animations: { () -> Void in
self.NameInput.transform = CGAffineTransformMakeTranslation(5 * direction, 0);
}, completion: nil)