2010-06-30 8 views
1

J'ai une CAReplicatorLayer répliquant sa sous-couche comme prévu, mais il y a une durée intégrée à l'animation que je veux désactiver. En d'autres termes, je veux voir les résultats instantanés de la réplication de la couche de base, plutôt que sur la durée implicitement spécifiée par Apple.Comment faire pour réduire la durée d'une animation implicite à 0 pour un CAReplicatorLayer

Voici le code de réplication, entouré d'un wrapper [CATransaction ...] qui, je pense, devrait fonctionner mais pas. La réplication prend encore une petite quantité de temps (+/- 0,25 sec) mais finie.

[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]; 

Des pensées? TIA Howard

J'ai fait une recherche plus approfondie et est venu avec ce qui suit, qui malheureusement encore ne fonctionne pas.

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

Répondre

2

Cela a fait l'affaire pour moi:

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