У меня есть 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];
Это помогло мне:
[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
replicatorLayer.instanceCount += 4;
[CATransaction commit];