我正在尝试在 Swift 中更改一个简单的 animateWithDuration
调用的动画 block 内图层的变换:
UIView.animateWithDuration(0.5, delay: 0.05, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.5, options: UIViewAnimationOptions.CurveEaseIn , animations: {
self.zigZag!.layer.mask.transform = CGAffineTransformMakeTranslation(100, 0)
}, completion: { (finished: Bool) in
})
但是,这总是会出现以下构建错误:
Cannot invoke 'animateWithDuration' with an argument list of type '(Double, animations: () -> Void)'
如果我删除 trasnform 行或用类似这样的其他内容替换它:
self.zigZag!.center = self.view.center
然后构建错误消失,应用构建正常。
在这一点上,我不确定我应该如何更改动画 block 内的变换并使其正确构建。
最佳答案
在您的情况下,您可以完全省略 Void -> in
;导致问题的真正罪魁祸首是这一行:
self.zigZag!.layer.mask.transform = CGAffineTransformMakeTranslation(100, 0)
因为类型不匹配。
应该是:
swift 2
UIView.animateWithDuration(0.5, delay: 0.05, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.5, options: UIViewAnimationOptions.CurveEaseIn, animations: {
self.view!.layer.mask.transform = CATransform3DMakeTranslation(100.0, 0.0, 0.0)
}, completion: nil)
swift 3、4、5
UIView.animate(withDuration: 0.5, delay: 0.05, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.5, options: UIView.AnimationOptions.curveEaseIn, animations: {
self.view!.layer.mask.transform = CATransform3DMakeTranslation(100.0, 0.0, 0.0)
}, completion: nil)
关于ios - 无法在 Swift 中的 animateWithDuration 动画 block 中进行变换更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32086659/