ios – UISwitch – 检测动画结束

ios – UISwitch – 检测动画结束,第1张

概述我有一个UITwitch,它位于UITableViewCell内.我为切换分配了目标 *** 作: [switch addTarget:self action:@selector(changeSwitchColor:) forControlEvents:UIControlEventValueChanged];- (void)changeSwitchColor:(id)sender{ ... 我有一个UITwitch,它位于UItableVIEwCell内.我为切换分配了目标 *** 作:

[switch addTarget:self action:@selector(changeSwitchcolor:) forControlEvents:UIControlEventValueChanged];- (voID)changeSwitchcolor:(ID)sender{    ...}

问题是在动画完成之前调用了changeSwitchcolor:但是我想检测动画何时结束,所以我可以设置thumbTintcolor属性而不会破坏动画.

我尝试使用UIVIEw setAnimationDIDStopSelector:方法检测动画:

[UIVIEw setAnimationDIDStopSelector:@selector(animationDIDStop:finished:context:)];- (voID)animationDIDStop:(Nsstring *)animationID finished:(NSNumber *)finished context:(voID *)context{    ...}

但是在UISwitch完成动画时没有调用此方法(我甚至不确定动画是如何在内部制作的).

如何检测UISwitch的完成状态?

谢谢!

解决方法 您可以使用CATransaction.setCompletionBlock(_ :).

addTarget(self,action: #selector(valueChanged(sender:)),for: [.valueChanged])@objc private func valueChanged(sender: UISwitch) {    CATransaction.setCompletionBlock { [onChange] in        onChange?(sender.isOn)    }}

文档说,即使没有动画或动画被删除,也可以保证调用该块.它使用起来非常安全.

总结

以上是内存溢出为你收集整理的ios – UISwitch – 检测动画结束全部内容,希望文章能够帮你解决ios – UISwitch – 检测动画结束所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1072423.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存