一尘不染

Swift中的Block语法

swift

我正在尝试从Objective-C重写为Swift,我无法弄清楚语法或无法理解文档

这是我编写的Objective-C的简化示例:

[UIView animateWithDuration:10.0 animations:^{self.navigationController.toolbar.frame = CGRectMake(0,10,0,10);}];

我该如何在Swift中编写代码?

这是模板自动完成功能提供的:

UIView.animateWithDuration(duration: NSTimeInterval, animations: (() -> Void))

阅读 2555

收藏
2020-07-07

共1个答案

一尘不染

由于预期的参数类型和animations参数的返回类型是已知的,因此编译器可以毫无问题地推断出它们。这应该可以工作(尽管目前我没有可用的游乐场:

UIView.animateWithDuration(10.0, animations: {
  self.navigationController.toolbar.frame = CGRect(x:0.0, y:10.0, width:10.0, height:0.0)
})

有关闭包的更多信息,请参见swift文档中章节

注意CGRect()-
开发人员文档显示CGRect()正在快速代码中使用。也许需要进口?

更新评论:您也可以使用结尾闭包,如下所示:

UIView.animateWithDuration(10.0) {
  self.navigationController.toolbar.frame = CGRect(x:0.0, y:10.0, width:10.0, height:0.0)
}
2020-07-07