gpt4 book ai didi

ios - 如何使用 Perform(aSelector : , with : , afterDelay : , inModes: ) 在延迟后暂停 CABasicAnimation

转载 作者:行者123 更新时间:2023-11-28 23:39:54 24 4
gpt4 key购买 nike

我正在使用 perform(aSelector: , with: , afterDelay: , inModes: ) 在指定延迟后暂停动画。但是,我不断收到无法识别的选择器错误。我不确定是什么原因造成的。

示例代码(更新):

    class ExpandingSelectedLayer: CALayer, CAAnimationDelegate
{

let expandingAnim = CABasicAnimation(keyPath: #keyPath(CALayer.bounds))
expandingAnim.perform(#selector(expandingAnim.pauseAnim), with: nil, afterDelay: 2.0, inModes: [RunLoopMode.commonModes])
}


extension CABasicAnimation
{
@objc func pauseAnim()
{
print("called pause Anim")
self.speed = 0

}
}

最佳答案

首先:perform(_:with:afterDelay:) 中的 anArgument 参数是传递给方法的参数。您问题中的选择器不接受任何参数,但您的 perform 调用正在向其传递一个参数。由于 pauseAnim 不接受任何参数,因此您只需为 anArgument 参数传递 nil 即可。

第二:从你的问题中不清楚 pauseAnim 方法是在哪里定义的。除非它是 CABasicAnimation 上的方法(或其类层次结构中的某处),否则您将无法在 CABasicAnimation 的实例上调用该方法。如果此方法是在 View Controller 或其他对象上定义的,您将使用它作为接收器(可能是 self)。

关于ios - 如何使用 Perform(aSelector : , with : , afterDelay : , inModes: ) 在延迟后暂停 CABasicAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53788323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com