Ios 在动画正在进行时访问表示层会崩溃

Ios 在动画正在进行时访问表示层会崩溃,ios,swift,core-animation,Ios,Swift,Core Animation,我有一个简单的动画来旋转我的应用程序中的视图: let rotationAnimation : CABasicAnimation = CABasicAnimation(keyPath: "transform.rotation.z") myView.layer.add(rotationAnimation, forKey: "rotationAnimation") 我试图在动画发生时找到动画的当前状态(角度)。我计划使用一个计时器,如下所示: timer = Timer.scheduledTime

我有一个简单的动画来旋转我的应用程序中的视图:

let rotationAnimation : CABasicAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
myView.layer.add(rotationAnimation, forKey: "rotationAnimation")
我试图在动画发生时找到动画的当前状态(角度)。我计划使用一个
计时器
,如下所示:

timer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(self.checkAngle), userInfo: nil, repeats: true)
检查角度如下所示:

@objc func checkAngle() {
    if let presLayer = self.myView.layer.presentation() {
        print("presLayer exists!")
     }           
}
但是,在评估获得表示层的行时,我遇到了崩溃。以下是崩溃日志:

2019-08-04 15:22:25.101122-0700 MyView[40772:13461590]-[NSConcreteValue doubleValue]:发送到实例0x60000211E1180的未识别选择器
2019-08-04 15:22:25.105561-0700 MyView[40772:13461590]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[NSConcreteValue doubleValue]:未识别的选择器发送到实例0x6000021e1180'


你知道我可能做错了什么,或者如何定期检查旋转角度吗?谢谢。

问题可能是
关键路径:“transform.rotation.z”
。这是一种围绕z轴执行旋转变换的危险方式,即使它看起来可能起作用


尝试将关键路径改为“变换”。将
toValue
设置为旋转变换,或使用
CAValueFunction(名称:.rotateZ)
问题可能是
keyPath:“transform.rotation.z”
。这是一种围绕z轴执行旋转变换的危险方式,即使它看起来可能起作用


尝试将关键路径改为“变换”。将
toValue
设置为旋转变换,或使用
CAValueFunction(名称:.rotateZ)

谢谢@matt,但我在使用简单变换时没有看到动画:
let-toValue=CGAffineTransform(rotationAngle:CGFloat(rotationAngle))rotationAnimation.toValue=toValue//NSNumber(value:rotationAngle)
我想我找到了。我正在将
fromValue
设置为一个转换,并将
toValue
设置为一个NSnumber。使两个相同的单元都修复了这个问题。我应该删除这个问题还是详细回答自己?谢谢@matt,但我在使用简单变换时没有看到动画:
let-toValue=cgfaffinetransform(rotationAngle:CGFloat(rotationAngle))rotationAnimation.toValue=toValue//NSNumber(value:rotationAngle)
我想我找到了。我正在将
fromValue
设置为一个转换,并将
toValue
设置为一个NSnumber。让两个相同的单元都修复了这个问题。我应该删除这个问题还是应该详细回答自己?