2009-05-09 10 views
0

J'ai deux sous-classes CALayer, chacune avec sa propre couche drawLayer: (CALayer *) inContext: (CGContextRef) ctx delegate. Ce sont deux couches simples (certaines formes de couleur unique dessinées avec des chemins CG), mais j'ai besoin de mettre à l'échelle environ 12 instances simultanément, et j'ai quelques problèmes avec les fréquences d'images. J'ai marqué toutes les couches comme opaques pour essayer de libérer des cycles, et j'ai essayé d'utiliser des animations de base implicites et explicites (sur la propriété bounds elle-même), ainsi que d'assigner des matrices CA3DTransform à la propriété transform.Problèmes de performances mettant à l'échelle plusieurs CALayers

Est-ce que quelqu'un connaît un bon moyen de redimensionner rapidement des objets tout en maintenant une bonne fréquence d'images?

Répondre

1

Cela ne semble pas être au-delà des capacités de l'iPhone.

Une solution pourrait être de les rendre à une image et l'échelle cela? C'est (plus ou moins) ce que CoreAnimation ferait. Il semble que vous ayez un défaut - vous devriez peut-être poster votre code et les gens pourraient le regarder.

Où réalisez-vous le redessin et que redessinez-vous?

0

Je suis d'accord avec Roger.

Vérifiez la fréquence à laquelle vos méthodes drawLayer:inContext: (ou tout ce que vous utilisez pour dessiner) sont appelées. Un NSLog simple peut accomplir cela. Si on les appelle constamment, pensez à l'idée de Roger de rendre une image et de la mettre à l'échelle.

Vous devrez probablement lancer les outils de performance pour trouver votre goulot d'étranglement.

Questions connexes