ios - 无法在 Swift 中的 animateWithDuration 动画 block 中进行变换更改

标签 ios swift uiviewanimation cgaffinetransform

我正在尝试在 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/

相关文章:

android - Flutter:删除已折旧的启动屏幕

ios - 使用swift阅读短信

ios - UITableView not loading data on app load//无法成功查询UITableViewCells的相关照片

ios - 如何使用alertcontroller添加警报消息?

swift - Firebase 评论未出现在数据库中

ios - 快速动画所有添加的 View alpha

ios - Uiwebview 使用 Swift 隐藏/显示 UInavigationbar

xcode - 无法将 UITableViewDataSouce 和 UITableViewDelegate 设置为 UIViewController

iphone - 为循环 UIView 动画 block 添加随机性

ios - 如果仅在 iOS 7 上设置动画,pushViewController 会导致黑屏