2010-06-30 76 views
1

我有一個CAReplicatorLayer按照預期複製其子圖層,但是我想關閉動畫的內置持續時間。換句話說,我希望看到複製基礎層的即時結果,而不是Apple在隱式指定的時間段內。如何減少CAReplicatorLayer隱式動畫的持續時間爲0

下面是複製代碼,由[CATransaction ...]包裝器括起來,我認爲它應該可以工作,但是沒有。複製仍然需要一個小的但有限的時間(+/- 0.25秒)。

[CATransaction begin]; 
[CATransaction setValue:[NSNumber numberWithFloat:0.0f] 
        forKey:kCATransactionAnimationDuration]; 
[CATransaction setAnimationDuration:0.0]; 

replicator.instanceCount = 10; 
replicator.instanceRedOffset = 0.1; 
replicator.instanceTransform = CATransform3DMakeTranslation(x, y, 0); 

[CATransaction commit]; 

有什麼想法? TIA Howard

我做了一個更廣泛的搜索,並想出了以下內容,遺憾的是仍然不起作用。

NSMutableDictionary* replicatorActions = [[NSMutableDictionary alloc] 
              initWithObjectsAndKeys:   
              [NSNull null], @"instanceRedOffset", 
              [NSNull null], @"instanceTransform", 
              nil]; 
replicator.actions = replicatorActions; 
[replicatorActions release]; 

回答

2

這爲我做的伎倆:

[CATransaction begin]; 
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; 
replicatorLayer.instanceCount += 4; 
[CATransaction commit];