swift - 如何使用同一个 UIButton 在不同时间执行多个不同的动画?
问题描述
我正在创建一个动画序列,当按下一个按钮时,一个对象会淡出。当再次按下同一个按钮时,另一个对象会淡出。这种情况一直发生,直到 8 个对象淡出。我已经尝试过使用代码,到目前为止,我已经让代码淡出一个对象,一次淡出两个或更多对象,但还没有像上面描述的那样成功地做到这一点。到目前为止,这是我的代码:
import UIKit
class DrinkWaterViewController: UIViewController {
@IBOutlet weak var glassOne: UIImageView!
@IBOutlet weak var glassTwo: UIImageView!
@IBOutlet weak var glassThree: UIImageView!
@IBOutlet weak var glassFour: UIImageView!
@IBOutlet weak var glassFive: UIImageView!
@IBOutlet weak var glassSix: UIImageView!
@IBOutlet weak var glassSeven: UIImageView!
@IBOutlet weak var glassEight: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
self.glassOne.alpha = 1.0
self.glassTwo.alpha = 1.0
}
@IBAction func drunkOne(_ sender: Any){
if self.glassOne.alpha == 1.0{
UIView.animate(withDuration: 1.5, delay: 0.2, animations:
{self.glassOne.alpha = CGFloat(0.1)}
)
}
}
解决方案
将您的眼镜放入一个数组glasses
并添加一个属性以跟踪nextToFade
. 然后只需淡化glasses[nextToFade]
和递增nextToFade
:1
class DrinkWaterViewController: UIViewController {
@IBOutlet weak var glassOne: UIImageView!
@IBOutlet weak var glassTwo: UIImageView!
@IBOutlet weak var glassThree: UIImageView!
@IBOutlet weak var glassFour: UIImageView!
@IBOutlet weak var glassFive: UIImageView!
@IBOutlet weak var glassSix: UIImageView!
@IBOutlet weak var glassSeven: UIImageView!
@IBOutlet weak var glassEight: UIImageView!
// array to hold the glasses so that they can be indexed
var glasses = [UIImageView]()
// index of next glass to fade
var nextToFade = 0
override func viewDidLoad() {
super.viewDidLoad()
// put the glasses into the array
glasses = [glassOne, glassTwo, glassThree, glassFour,
glassFive, glassSix, glassSeven, glassEight]
// make sure they're all visible
glasses.forEach { $0.alpha = 1.0 }
}
@IBAction func drunkOne(_ sender: Any) {
// make sure not to index beyond the end of the array
guard nextToFade < glasses.count else { return }
let glass = glasses[nextToFade]
nextToFade += 1
UIView.animate(withDuration: 1.5, delay: 0.2, animations:
{ glass.alpha = 0.1 }
)
}
}
推荐阅读
- python - 为什么我的 equal 方法总是返回 false?
- tfs - TFS 2017 插件问题 - 捕获异常TF30063:您无权访问“https://tfs.com//TeamProject
- python - JWT 不接受承载授权
- sql - 聚集索引不适用于 IN 和 OR 子句
- java - 二维数组不起作用
- python - 比较和对比 DNNClassifier 和 DNNLinearCombinedClassifier
- java - `setBufferedSize()` 方法有什么作用?
- regex - 角度正则表达式获取网址的最后部分
- javascript - Meteor react设计——嵌套组件:函数调用
- json - 发送 res json 以返回请求 [nodeJs]