如何将CAReplicatorLayer的隐式动画的持续时间减少到0

时间:2010-06-30 20:55:07

标签: cocoa core-animation calayer

我有一个CAReplicatorLayer按照预期复制其子图层,但是我想要关闭动画的内置持续时间。换句话说,我希望看到复制基础层的瞬时结果,而不是Apple隐含指定的持续时间。

这是复制代码,由[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 霍华德

我进行了更广泛的搜索,并提出了以下内容,遗憾的是无效。

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

1 个答案:

答案 0 :(得分:2)

这对我有用:

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