我有一个CALayer,它在y轴上的屏幕外动画(移动)。
在屏幕外我正在做[myLayer removeFromSuperLayer]
因此它从视图中消失并且不会回到起始位置。
当图层仍然在视图中时,可以通过按下切换按钮暂停并恢复它,这一切都很好。
唯一的问题是[myLayer removeFromSuperLayer]
运行后我的应用程序崩溃了。
这是因为按钮试图暂停或恢复不再存在的图层。
如何检查图层是否已移除或仍在视图中?
对于我的切换按钮的暂停部分,我认为是这样的:
if (self.myLayer == nil)
{
// here i want to add the layer again
[self.view.layer addSublayer:myLayer];
// immediately pause it
[self pauseLayer:myLayer];
}
else
{
// just pause no need to create the layer again because it's still there
[self pauseLayer:myLayer];
}
你可能会怀疑self.myLayer == nil
不是这样做的,但那是什么?
提前致谢。
答案 0 :(得分:0)
从超级图层中删除图层不会导致图层变为零,这就是您的self.myLayer == nil
检查不起作用的原因。但是,当您删除字段时,可以轻松地将字段设置为nil,例如:
[self.myLayer removeFromSuperLayer];
self.myLayer = nil;
当然,如果您需要在此之后再次添加它,那么您需要将图层重新分配给self.myLayer
(如果您有一个引用它以保留其他地方)或创建一个从头开始的新图层实例。