La désactivation de l'implicite animations -[CALayer setNeedsDisplayInRect:]

J'ai une couche avec certains complexes, le code de dessin dans son drawInContext: la méthode. J'essaie de minimiser la quantité de dessin que j'ai besoin de le faire, donc je suis aide -setNeedsDisplayInRect: pour la mise à jour, le changement de pièces. Cela fonctionne magnifiquement. Toutefois, lorsque le système graphique des mises à jour de ma couche, c'est la transition de l'ancienne à la nouvelle image à l'aide d'un cross-fade. J'aimerais qu'il basculer instantanément.

J'ai essayé d'utiliser CATransaction pour désactiver les actions et définir la durée à zéro, et ne travaillent pas. Voici le code que j'utilise:

[CATransaction begin];
[CATransaction setDisableActions: YES];
[self setNeedsDisplayInRect: rect];
[CATransaction commit];

Est-il une autre méthode sur CATransaction je devrait utiliser à la place (j'ai aussi essayé -setValue:forKey: avec kCATransactionDisableActions, même résultat).

  • vous pouvez le faire dans la prochaine exécution de la boucle: dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ });
  • J'ai trouvé beaucoup de réponses ci-dessous à travailler pour moi. Également utile de Apple est l'Évolution d'une Couche Comportement par Défaut document, qui décrit l'implicite de l'action de processus de prise de décision dans le détail.
  • C'est une double question à celui-ci: stackoverflow.com/a/54656717/5067402
InformationsquelleAutor Ben Gottlieb | 2010-02-11