我正在使用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
}
}
最佳答案
首先:anArgument
中的perform(_:with:afterDelay:)
参数是传递给方法的参数。问题中的选择器不接受任何参数,但您的perform
调用正在为其传递参数。由于pauseAnim
不接受任何参数,因此您只需将nil
用作anArgument
参数。
第二:从您的问题尚不清楚pauseAnim
方法的定义位置。除非它是CABasicAnimation
上的方法(或其类层次结构中的某个位置),否则您将无法在CABasicAnimation
的实例上调用该方法。如果在视图控制器或其他对象上定义了此方法,则可以将其用作接收器(可能是self
)。
关于ios - 如何使用perform(aSelector:,with:,afterDelay:,inModes:)在延迟后暂停CABasicAnimation,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53788323/