swift - 如何停止 QuartzCore-CABasicAnimation 的动画
问题描述
我的动画效果很好,尽管我想添加一个切换按钮,通过点击暂停动画,正如您在“动画正在运行”中看到的那样 - 当您打开屏幕并单击它时心脏会跳动 - 它停止返回原始状态尺寸
@IBOutlet var heartImage: UIButton!
var isAnimRunning = true
let pulseAnimation:CABasicAnimation = CABasicAnimation(keyPath: "transform.scale")
override func viewDidLoad() {
super.viewDidLoad()
heartBit()
}
func heartBit(){
if isAnimRunning == true{
pulseAnimation.duration = 0.8
pulseAnimation.toValue = NSNumber(value: 2.0)
pulseAnimation.repeatCount = HUGE
pulseAnimation.isCumulative = true
pulseAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
pulseAnimation.autoreverses = true
pulseAnimation.repeatCount = Float.greatestFiniteMagnitude
pulseAnimation.fromValue = NSNumber(value: 0.0)
self.view.layer.add(pulseAnimation, forKey: "transform.scale")
// self.view.layer.add(pulseAnimation, forKey: "transform.scale")
}else if isAnimRunning == false{ //*****tried all that without any luck
self.pulseAnimation.toValue = NSNumber(value: 1.0)
// self.view.layer.removeAnimation(forKey: "transform.scale")
//self.view.layer.removeAllAnimations()
// view.layer.removeAllAnimations()
//self.view.layer.removeAnimation(forKey: "transform.scale")
// self.view.layer.removeAllAnimations()
}
}
@IBAction func heartBtn(_ sender: Any) {
isAnimRunning = !isAnimRunning
}
}
谢谢你的帮手。任何问题我都有空
再次 - 敲击时使心脏停止并再次敲击 - 心脏恢复动画
解决方案
要切换动画,我想更新如下heartBit
方法,
func heartBit() {
isAnimRunning = !isAnimRunning
if isAnimRunning == false { // Run animation if no animation
pulseAnimation.duration = 0.8
pulseAnimation.toValue = NSNumber(value: 2.0)
pulseAnimation.repeatCount = HUGE
pulseAnimation.isCumulative = true
pulseAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
pulseAnimation.autoreverses = true
pulseAnimation.repeatCount = Float.greatestFiniteMagnitude
pulseAnimation.fromValue = NSNumber(value: 0.0)
self.view.layer.add(pulseAnimation, forKey: "transform.scale")
} else { // Remove animation if already running
self.view.layer.removeAllAnimations()
}
}
button click
现在您可以像在其中一样调用此方法,viewDidLoad
它将切换动画。
@IBAction func heartBtn(_ sender: Any) {
heartBit()
}
注意:确保您的heartBtn
方法已连接并在按钮单击时被调用。在我的观察中,当整个视图处于动画状态时,很难点击按钮。
推荐阅读
- javascript - 下拉菜单在 Chrome 中显示正常,但在 Safari 中不显示(由图像覆盖)
- javascript - RegExp (javascript) :: find a group of php variables including the $ character (Enlighter JS)
- python - Python - TypeError: super(type, obj): obj 必须是类型的实例或子类型?
- list - 换行符不适用于嵌入消息中的列表 - Discord.py
- c# - 选择带有复选框的列表视图行
- python - 什么是打印功能中的冲洗?
- python - 我可以在使用存储变量时保持 tkinter 窗口打开吗?
- javascript - 无法在 Google Chart 上为 Tree Map 设置内部 HTML
- ruby-on-rails - 有没有办法在查询中修改 .where() 查询的数据库端?
- c++ - 如何在 C++ 中为定义找到像 0x000000 这样的值?