Как уменьшить длительность неявной анимации до 0 для CAReplicatorLayer - PullRequest
1 голос
/ 01 июля 2010

У меня есть 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];

Есть мысли? ТИА Говард

Я провел более обширный поиск и нашел следующее, которое, к сожалению, все еще не работает.

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

1 Ответ

2 голосов
/ 09 августа 2010

Это помогло мне:

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