Swift中的下拉动画 - 完成块错误

时间:2015-07-14 17:08:59

标签: ios swift animation

我按照此处列出的代码:Dropdown list in swift

即:

func animateDropDownToFrame(frame: CGRect, completion:() -> Void) {
    if (!self.isAnimating) {
        self.isAnimating = true
        UIView.animateWithDuration(0.5, delay: 0.0, options: .CurveEaseInOut, animations: { () -> Void in
            self.dropDownView.frame = frame
            }, completion: {(completed: Bool) -> Void in
            self.isAnimating = false
            if (completed) {
                completion()
            }
            }
        )
    }
}

并在完成时继续获取错误:

  

预期','分离器

     

类型名称后的预期成员名称或构造函数调用

请注意,由于我认为括号位于错误的位置,因此我稍微更改了完成行,但并不认为这是问题所在。

可能是什么问题(以及我自己调试此问题的最佳方法是什么)?

1 个答案:

答案 0 :(得分:0)

编写的语法非常难以理解。 Swift编译器可能还有一个错误,它无法解析您编写的内容。 Swift允许嵌套函数,所以你可以这样做:

func animateDropDownToFrame(frame: CGRect, completion:() -> Void) {
    func animate() {
        self.dropDownView.frame = frame
    }

    func animationDidComplete(completed : Bool) {
        self.isAnimating = false
        if (completed) {
            completion()
        }
    }

    if (!self.isAnimating) {
        self.isAnimating = true
        UIView.animateWithDuration(0.5, delay: 0.0, options: .CurveEaseInOut, animations: animate, completion: animationDidComplete)
    }
}

(我现在可以访问Xcode,因此可能存在一些错别字。根据需要更正)