额外的争论'延迟'在电话中

时间:2014-10-01 19:36:44

标签: xcode swift

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

2 个答案:

答案 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)