2010-01-09 5 views
0

J'essaie de déplacer un code de dessin personnalisé d'une vue dans un CAShapeLayer, qui est ensuite ajouté en tant que sous-calque au CALayer de la vue d'origine. Cela fonctionne également bien, mais lors de la rotation de l'appareil, l'animation commence à bégayer, par ex. vous voyez juste le cadre dans l'orientation originale et ensuite l'orientation finale, avec au plus une image entre - pas lisse du tout. Les animations de slide-in et de slide-out du UIViewController correspondant sont aussi un peu saccadées (mais pas tellement).CAShapeLayer ralentissant la rotation de l'interface

Tous les CAShapeLayer a dans son path est un CGPathAddRect, il est défini comme opaque, son opacity est 1.0f et le fillColor est réglé sur bleu opaque.

Lorsque vous tracez le chemin directement dans la vue drawRect méthode, cependant, l'animation est lisse. Donc, je suppose que cela a quelque chose à voir avec le CAShapeLayer étant animé pendant la rotation.

Pourriez-vous me dire comment soit se débarrasser de ces saccades ou simplement masquer le CAShapeLayer lors de l'animation? Revenir à simplement dessiner CGPath s n'est pas une option pour moi car je compte sur la capacité de CAShapeLayer pour animer son chemin (il n'est pas animé dans mes essais avec la rotation de la vue).

/mise à jour: il se produit également lorsque l'avis de la UIViewController rotatif contient une vue d'une sous-classe de CAGradientLayer comme layerClass (par exemple, une vue d'une couche de gradient comme arrière-plan).

Vive

MrMage

Répondre

0

On dirait que ce problème a été résolu par Apple dans iOS 4.

0

Eh bien il y a une propriété cacher, vous pouvez cacher la CAShapeLayer puis faire l'animation. Ensuite, appelez une méthode qui non cache la CAShapeLayer afin que vous ne voyez pas pendant qu'il tourne et il doit être lisse

+0

J'ai essayé cette. Ça ne marche pas. Il ne permet même pas de supprimer complètement la '' CAShapeLayer' dans - (void) willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation \t \t \t \t \t \t \t \t \t \t Durée: (NSTimeInterval) duration' puis ajoutez-le dans ' - (void) didRotateFromInterfaceOrientation: (UIInterfaceOrientation) fromInterfaceOrientation'. – MrMage

+0

Eh bien, vous pourriez le delloc et l'allouer et aussi l'enregistrer? essayez cela peut-être. BTW me donne un peu de marge je ne suis pas le plus grand esprit de l'iPhone, ou même à ce codage. il suffit de regarder mon profil et de voir les questions. J'ai vraiment très peu d'arrière-plan derrière moi. Je n'ai que 17 ans. Désolé pour le manque d'aide de ma part – Jaba

+0

Etes-vous vraiment sûr que la couche est même le problème? – Jaba

Questions connexes