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 }
static func animate(_ duration: TimeInterval,withComplection completion: ((Bool) -> Void)? = nil) { UIView.animate( withDuration: duration,animations: { animations() },completion: { finished in completion?(finished) }) }