2013-10-04 34 views
0

我有一個包含大量動畫子圖層的CALayer層次結構。動畫總是附加的,但是它們可能會隨時暫停(通過設置根層的速度),以便用戶可以通過動畫進行擦洗。強制重繪暫停動畫的表示層

我也有一個捏手勢,允許我放大圖層。這通常是完美的。但是,手動繪製的CALayers(通過drawInContext :)在縮放時變爲像素化。

在手勢結束我確保我更新這些層的含量比例正確:

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

... 

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

[CATransaction commit]; 

然而,這沒有影響直到動畫移動到下一幀(用戶磨砂通過動畫)。

問題是,動畫的圖層不會被重畫。我試圖改變其contentsScale,但該屬性在表示層上是隻讀的。

奇怪的是,層次結構中的CAShapeLayer都被完全重新渲染。

我該如何強制重畫暫停的動畫?

回答

0

在我看來,強制重繪暫停動畫的表示層是不可能的。

但是,我通過刪除圖層並在用戶結束縮放手勢時重新創建它們來解決了這些問題。