当前位置: 首页 > 面试题库 >

Swift中的Block语法

孟豪
2023-03-14
问题内容

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

问题答案:

由于预期的参数类型和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)
}


 类似资料:
  • 多个action组装成块,可以根据不同条件执行一段语句 : tasks: - block: - yum: name={{ item }} state=installed with_items: - httpd - memcached - template: src=templa

  • 问题内容: 我正在学习Swift的语法,想知道为什么下面的代码无法按我期望的那样工作: 我想每次将数字除以3(3、6、9、12等)时都打印Fizz,并且每次将其除以5时都打印Buzz,那么缺少哪一块拼图? 注意:我确实使用以下方法解决了问题: 我想知道如何使用Switch解决此问题。谢谢。 问题答案: FizzBu​​zz游戏的通常规则 是用“ Fizz”替换每个3的倍数,用“ Buzz”替换每个

  • 本文向大家介绍block、inline、inline-block的区别?相关面试题,主要包含被问及block、inline、inline-block的区别?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。 block元素可以设置width,height属性。块级元素即使设置了宽度

  • 问题内容: 我试图将一个函数传递给另一个函数,然后使传递的函数执行并传递给它一个变量。 这是我的代码: 我得到的错误是 错误是“无法将’String’的值类型转换为预期的参数类型’()’。我知道这是语法问题-只是不知道它应该是什么。 问题答案: Rob的答案是正确的,尽管我想分享一个简单的工作回调/完成处理程序的示例,但是您可以在下面下载示例项目并尝试使用的输入。 斯威夫特5: 重要说明:

  • Jasmine还允许开发人员跳过一个或多个测试用例。 这些技术可以在Spec level或Suite level 。 根据应用程序的不同,此块可分别称为Skipping Spec和Skipping Suite 。 在以下示例中,我们将学习如何使用“x”字符跳过特定的Spec或Suite 。 跳过规格 我们将在语句之前使用“x”修改前面的示例。 describe('This custom match

  • 问题内容: 有没有一种方法可以用Swift语言创建抽象类,还是像Objective-C一样有局限性?我想创建一个与Java定义的抽象类相当的抽象类。 问题答案: Swift中没有抽象类(就像Objective- C一样)。最好的选择是使用Protocol,就像Java接口一样。 然后,借助Swift 2.0,您可以使用协议扩展添加方法实现和计算的属性实现。唯一的限制是您 不能提供成员变量或常量 ,