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

UIView.animateWithDuration快速循环动画

赵镜
2023-03-14
问题内容

在ViewController.Swift中,我设法使一个盒子从一个点动画到另一个点。我认为将其循环很容易,因此框将动画到一个点,然后再动画回到其原始位置,然后再次循环。我已经设法将对象移到某个位置,并在“完成”后再次将其移回,但这并没有使我循环。如何做到这一点?

我以为这也许行得通,但老实说我不知道​​:

let boxmoves = [CGRect(x: 120, y: 220, width: 100, height: 100), CGRect(x: 120, y: 120, width: 100, height: 100)]
for boxmove in boxmoves {
    coloredSquare.frame = boxmove
}

如何根据设备宽度居中(我假设涉及数学运算?)?

我的代码:

let coloredSquare = UIView()

coloredSquare.backgroundColor = UIColor.blueColor()

coloredSquare.frame = CGRect(x: 120, y: 120, width: 100, height: 100)

self.view.addSubview(coloredSquare)

// found repeate but this will not animate as I want.
//UIView.animateWithDuration(2.0, delay: 0.2, options: UIViewAnimationOptions.Repeat, animations: {
UIView.animateWithDuration(2.0, animations: {

    coloredSquare.frame = CGRect(x: 120, y: 220, width: 100, height: 100)

    }, completion: { finished in
        UIView.animateWithDuration(2.0, animations: {
        coloredSquare.frame = CGRect(x: 120, y: 120, width: 100, height: 100)
        })
})

问题答案:

无需执行完成块方法,只需使用animation options参数即可:

已针对Swift 3.0更新

UIView.animate(withDuration: 2.0, delay: 0, options: [.repeat, .autoreverse], animations: {

    coloredSquare.frame = CGRect(x: 120, y: 220, width: 100, height: 100)

}, completion: nil)

如果出于任何原因要稍后停止动画,请使用:

coloredSquare.layer.removeAllAnimations()


 类似资料:
  • 问题内容: …或者如何在for循环条件中使用索引 大家好,因为我们在Swift 3中没有使用c风格的循环,所以我似乎找不到一种表达一些复杂的循环的方法,所以也许您可以帮我一下。 如果我要写这个 快速3我该怎么做? 我的关闭时间是: 但这当然会一次迭代5个块,如果我是:5、25、125等。 有任何想法吗? 谢谢 问题答案: 使用辅助函数(最初在将使用除法的C样式for循环转换为Swift3时定义 您

  • 问题内容: 我正在Swift中编写一些性能关键的代码。在实现了我能想到的所有优化并在Instruments中对应用程序进行了性能分析之后,我意识到,绝大多数CPU周期都花在了Floats数组上的执行和操作上。所以,只是为了看看会发生什么,我更换的所有实例,并具有良好的老式循环。令我惊讶的是,循环快得多了! 对此感到有些困惑,我决定执行一些粗略的基准测试。在一个测试中,我执行了一些简单的算术,然后返

  • 我正在用Swift编写一些性能关键的代码。在实现了我能想到的所有优化,并在仪器中分析了应用程序之后,我意识到绝大多数CPU周期都花在了对浮点数组执行和操作上。因此,为了看看会发生什么,我用良好的老式循环替换了和的所有实例。令我吃惊的是...循环要快得多! 的平均执行时间:20.1秒。循环的平均执行时间:11.2秒。使用整数而不是浮点的结果是相似的。 我创建了一个类似的基准测试Swift的的性能。这

  • Swoole的绝大部分功能只能用于cli命令行环境,请首先准备好Linux Shell环境。可使用vim、emacs、phpstorm或其他编辑器编写代码,并在命令行中通过下列指令执行程序。 php /path/to/your_file.php 成功执行Swoole服务器程序后,如果你的代码中没有任何echo语句,屏幕不会有任何输出,但实际上底层已经在监听网络端口,等待客户端发起连接。可使用相应的

  • 问题内容: 在c ++或c编程语言中,我们知道要使用gotoxy(x,y)来更改坐标,并且可以使用循环和睡眠来更改坐标并制作动画。像这样; 但是我的问题是在JAVAFX 2.0编程中如何?我正在使用netbeans 7.2。感谢您的帮助。 问题答案: 看一下使用时间轴动画。它是JavaFX中动画的关键组成部分, 用于确定动画的关键部分何时以及以什么顺序出现。 这是一个例子

  • Dubbo 采用全 Spring 配置方式,透明化接入应用,对应用没有任何 API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于 Spring 的 Schema 扩展 进行加载。 如果不想使用 Spring 配置,可以通过 API 的方式 进行调用。 服务提供者 完整安装步骤,请参见:示例提供者安装 定义服务接口 DemoService.java 1: package