ios - Xcode 9 - 尝试为 UIView 设置两次动画
问题描述
我正在尝试为按钮设置动画,使其向左倾斜 pi/5,然后向右倾斜相同的量,以便它回到原来的位置(我试图让按钮看起来好像在摇晃)
但是,Xcode 会切断动画,因为它意识到按钮整体不会改变角度。这是当前代码 - 如果有人对动画按钮来回摇动有任何建议,那将非常感激。
for i in 0...8 {
if pressedArray[i] == true {
self.panlButtons[i].backgroundColor = UIColor.clear
UIView.animate(withDuration: 1, animations:{
self.panlButtons[i].backgroundColor = self.wrongColour
self.panlButtons[i].transform = CGAffineTransform(rotationAngle: CGFloat.pi / -5)
})
UIView.animate(withDuration: 1, animations:{
self.panlButtons[i].backgroundColor = self.wrongColour
self.panlButtons[i].transform = CGAffineTransform(rotationAngle: CGFloat.pi / 5)
}, completion: { finished in
self.panlButtons[i].backgroundColor = self.notPressedColour
})
代码说明:pressedArray[]是一个Bools数组,表示按下了哪个按钮 panlButtons[]是一个按钮数组for循环从0-8是因为只有8个按钮
解决方案
在第一个动画完成时移动下一个动画,如下图
UIView.animate(withDuration: 1, animations:{
self.panlButtons[i].backgroundColor = self.wrongColour
self.panlButtons[i].transform = CGAffineTransform(rotationAngle: CGFloat.pi / -5)
}, completion: {
UIView.animate(withDuration: 1, animations:{
self.panlButtons[i].backgroundColor = self.wrongColour
self.panlButtons[i].transform = CGAffineTransform(rotationAngle: CGFloat.pi / 5)
}, completion: { finished in
self.panlButtons[i].backgroundColor = self.notPressedColour
})
})
推荐阅读
- r - ggplot:为(双)分组箱线图中的每个箱添加注释;确定 x 位置
- php - 在 laravel 中显示按最新排序的关系集合
- python - ValueError:要解包的值太多(预期为 2)-当我训练我的卷积神经网络时
- c# - 使用 SemaphoreSlim 限制 TPL 数据流的问题
- vue.js - 如何访问路由参数:通过完全 nuxt-i18n 本地化路由?(localeLocation 与 localePath)
- kubernetes - 如何为作为 kubernets pod 运行的气流设置持久日志记录和 dag
- r - 线性回归中的错误:对比只能应用于具有 2 个或更多水平的因素
- javascript - 如果过滤键可以具有任何类型的值,我如何过滤数组中的唯一对象?
- python - python在嵌套字典中搜索值和键
- c++ - 为什么 operator= 不适用于具有新模板放置的标准类型?