持续检查 Swift 中的响应
Continuously check for response in Swift
我有一个名为 flag
的布尔变量,初始值为 false
。基于成功的过程,它被设置为 true。有一个按钮 alert
,当点击它时,它会检查标志的值以及 UI 上的旋转图像,如果 flag
为真,则应显示一条成功消息。否则,它应该继续响应检查(10 次,持续 5 秒)。
这是我的功能。我一直在使用 NStimer
来实现这一目标。这是代码片段:
var timer = NSTimer()
var count = 10
var flag: Bool = false
@IBOutlet weak var alert: UIButton!
@IBAction func alertAction(sender: AnyObject) {
timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: #selector(ViewController.prints), userInfo: nil, repeats: true)
}
func prints(){
if(count > 0)
{
if flag == false{
**Spinning Image**
count -= 1
} else {
count = 0
}
} else {
timer.invalidate()
}
}
旋转图像停止并在每 5 秒后继续(以防响应时间超过 5 秒)。我希望不间断地连续旋转图像。有人可以帮忙吗?
提前致谢!
轮询是最绝望的异步模式,几乎总是错误的。了解一些关于价值观察和反应模式的知识。
var flag = false {
didSet {
if flag {
// stop spinning
}
}
}
func alertAction() {
// start spinning
}
据我了解,此代码将按照您的意图进行。如果您使用的是 UIActivityIndicator。确保在我启动 rotationAnimation 的地方启动它,并在使您的计时器无效时停止它。
Swift3 例子
@IBOutlet weak var pin: UIImageView!
var timer: Timer?
var count: Int = 5
var flag: Bool {
return count == 0
}
@IBAction func buttonPressed(_ sender: AnyObject) {
let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation")
rotationAnimation.fromValue = 0
rotationAnimation.toValue = 2 * M_PI
rotationAnimation.duration = 0.6
rotationAnimation.isCumulative = true
rotationAnimation.repeatCount = Float.infinity
pin.layer.add(rotationAnimation, forKey: "rotate")
timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(prints), userInfo: nil, repeats: true)
}
func prints() {
if flag {
pin.layer.removeAllAnimations()
timer?.invalidate()
} else {
count = count - 1
}
}
我有一个名为 flag
的布尔变量,初始值为 false
。基于成功的过程,它被设置为 true。有一个按钮 alert
,当点击它时,它会检查标志的值以及 UI 上的旋转图像,如果 flag
为真,则应显示一条成功消息。否则,它应该继续响应检查(10 次,持续 5 秒)。
这是我的功能。我一直在使用 NStimer
来实现这一目标。这是代码片段:
var timer = NSTimer()
var count = 10
var flag: Bool = false
@IBOutlet weak var alert: UIButton!
@IBAction func alertAction(sender: AnyObject) {
timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: #selector(ViewController.prints), userInfo: nil, repeats: true)
}
func prints(){
if(count > 0)
{
if flag == false{
**Spinning Image**
count -= 1
} else {
count = 0
}
} else {
timer.invalidate()
}
}
旋转图像停止并在每 5 秒后继续(以防响应时间超过 5 秒)。我希望不间断地连续旋转图像。有人可以帮忙吗?
提前致谢!
轮询是最绝望的异步模式,几乎总是错误的。了解一些关于价值观察和反应模式的知识。
var flag = false {
didSet {
if flag {
// stop spinning
}
}
}
func alertAction() {
// start spinning
}
据我了解,此代码将按照您的意图进行。如果您使用的是 UIActivityIndicator。确保在我启动 rotationAnimation 的地方启动它,并在使您的计时器无效时停止它。
Swift3 例子
@IBOutlet weak var pin: UIImageView!
var timer: Timer?
var count: Int = 5
var flag: Bool {
return count == 0
}
@IBAction func buttonPressed(_ sender: AnyObject) {
let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation")
rotationAnimation.fromValue = 0
rotationAnimation.toValue = 2 * M_PI
rotationAnimation.duration = 0.6
rotationAnimation.isCumulative = true
rotationAnimation.repeatCount = Float.infinity
pin.layer.add(rotationAnimation, forKey: "rotate")
timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(prints), userInfo: nil, repeats: true)
}
func prints() {
if flag {
pin.layer.removeAllAnimations()
timer?.invalidate()
} else {
count = count - 1
}
}