static func animate(_ duration: TimeInterval, animations: (() - Void)!, delay: TimeInterval = 0, options: UIViewAnimationOptions = [], withComplection completion: (() - Void)! = {}) { UIView.animate( withDuration: duration, delay: delay, op
static func animate(_ duration: TimeInterval,
animations: (() -> Void)!,
delay: TimeInterval = 0,
options: UIViewAnimationOptions = [],
withComplection completion: (() -> Void)! = {}) {
UIView.animate(
withDuration: duration,
delay: delay,
options: options,
animations: {
animations()
}, completion: { finished in
completion()
})
}
Using above class in my swift file and create function like below
SPAnimation.animate(durationScalingRootView,
animations: {
rootViewController.view.transform = CGAffineTransform.identity
},
delay: delayScalingRootView,
options: UIViewAnimationOptions.curveEaseOut,
withComplection: {
finished in
//rootViewController.view.layer.mask = nil
})
得到此错误
问题出在这里:Contextual closure type ‘() -> Void’ expects 0 arguments, but 1 was
used in closure body
withComplection: {
finished in
//rootViewController.view.layer.mask = nil
}
如果查看方法声明,则完成处理程序的类型为(() – > Void)!.它不需要任何论据.上面的闭包需要一个参数 – 完成.结果,发生错误.
从闭包中删除完成的参数:
withComplection: {
//rootViewController.view.layer.mask = nil
}
或者您编辑animate方法以接受带有一个参数的闭包:
static func animate(_ duration: TimeInterval,
animations: (() -> Void)!,
delay: TimeInterval = 0,
options: UIViewAnimationOptions = [],
withComplection completion: ((Bool) -> Void)? = nil) {
UIView.animate(
withDuration: duration,
delay: delay,
options: options,
animations: {
animations()
}, completion: { finished in
completion?(finished)
})
}
