我尝试了很多组合,以便在Swift中为转换协调员调用animateAlongSideTransition
。我觉得我错过了一些非常愚蠢的东西。
如果我想调用它(来自Swift文档):
func animateAlongsideTransition(_ animation: ((UIViewControllerTransitionCoordinatorContext!) -> Void)!,
completion completion: ((UIViewControllerTransitionCoordinatorContext!) -> Void)!) -> Bool
我该怎么办?我只是想在动画块中传递一些东西而在完成块中没有任何东西。
答案 0 :(得分:7)
这绝对是你想要做的:
coordinator.animateAlongsideTransition({ context in
// do whatever with your context
context.viewControllerForKey(UITransitionContextFromViewControllerKey)
}, completion: nil)
如果对第一个隐式参数使用$0
之类的变量,也可以省略参数,所以
coordinator.animateAlongsideTransition({
$0.viewControllerForKey(UITransitionContextFromViewControllerKey)
}, completion: nil)
in
语法起初很惊讶,但你必须只学习一次:)
in
将参数与块体$0
,$1
,$2
来省略参数...... 似乎有一个更冗长的语法,但它绝对不符合Swift精神(而且我太懒了,不能在那里发布)
希望它能帮助(我不会忘记任何事情......)
修改强>
另一个专业提示是当块是唯一的参数时,你甚至可以省略括号 (下一个不起作用,但是要想出这个想法)
coordinator.animateAlongsideTransition{
$0.viewControllerForKey(UITransitionContextFromViewControllerKey)
}
答案 1 :(得分:2)
你这样做(至少在Swift 1.2中):
transitionCoordinator.animateAlongsideTransition({context in //things to animate, for example: view.alpha = 0.5
}, completion: nil)