Как уменьшить продолжительность неявной анимации к 0 для CAReplicatorLayer

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

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

NSMutableDictionary* replicatorActions = [[NSMutableDictionary alloc]
                                            initWithObjectsAndKeys:         
                                            [NSNull null], @"instanceRedOffset",
                                            [NSNull null], @"instanceTransform",
                                            nil];
replicator.actions = replicatorActions;
[replicatorActions release];
1
задан hkatz 30 June 2010 в 21:15
поделиться

1 ответ

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

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
replicatorLayer.instanceCount += 4;
[CATransaction commit];
2
ответ дан 2 September 2019 в 23:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: