2010-06-30 1 views
1

У меня есть CAReplicatorLayer, реплицирующий его подуровень, как и ожидалось, но для анимации, которую я хочу отключить, есть встроенная продолжительность. Другими словами, я хочу видеть мгновенные результаты репликации базового слоя, а не по длительности времени, которая неявно указана Apple.Как уменьшить длительность неявной анимации до 0 для CAReplicatorLayer

Вот код репликации, заключенный в скобки с помощью оболочки [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]; 

 Смежные вопросы

  • Нет связанных вопросов^_^