这里有一个简单的片段,可以使用我定义的UIView进行简单的动画。
UIView.animateWithDuration(0.1) { [weak self] in
self?.popOverView.center = gesture.locationInView(self?.view)
}
这里的 [弱引用] 是为了避免引用循环,我还使用了尾随闭包来简化代码。然而,编译器对此不满并给出错误信息。
Cannot invoke 'animateWithDuration' with an argument list of type '(FloatLiteralConvertible, () -> () -> $T2)'
$T2代表什么?奇怪的是,当闭包体中有两个或更多语句时,它可以正确编译。UIView.animateWithDuration(0.1) { [weak self] in
println()
self?.popOverView.center = gesture.locationInView(self?.view)
}
我知道,如果闭包体中只有一个语句,它将自动返回。