强制重绘暂停动画的表示层

时间:2013-10-04 15:38:26

标签: ios core-graphics core-animation

我有一个包含许多动画子图层的CALayer层次结构。动画始终是附加的,但可以随时暂停(通过设置根层的速度),以便用户可以擦除动画。

我还附加了一个捏手势,可以让我放大图层。这通常很完美。但是,手动绘制的CALayers(通过drawInContext :)会在缩放时变为像素化。

在手势结束时,我确保正确更新这些图层的内容比例:

[CATransaction begin];
[CATransaction setDisableActions:YES];

...

if (recognizer.state == UIGestureRecognizerStateEnded) {
    for (CALayer *layer in _layers) {
        layer.contentsScale = _scale;
    }
}

[CATransaction commit];

然而,这不会影响直到动画移动到下一帧(用户擦洗动画)。

问题是,动画的表示层没有被重绘。我试图更改其contentsScale,但该属性在表示层上是只读的。

奇怪的是,层次结构中的CAShapeLayers都被完美地重新渲染。

如何强制重绘暂停的动画?

1 个答案:

答案 0 :(得分:0)

在我看来,迫不可能强制重绘暂停的动画演示层。

然而,我通过删除图层并在用户结束缩放手势时重新创建它来解决这些问题。