Question

Je suis en train de déplacer un code de dessin personnalisé à partir d'une vue sur un CAShapeLayer, qui a ensuite s'ajouté comme sous-couche au CALayer de la vue originale. Cela fonctionne aussi bien, mais lors de la rotation du dispositif, l'animation commence à bégayer, par exemple vous voyez que le cadre dans l'orientation initiale et l'orientation finale, avec au plus un cadre entre - pas lisse du tout. animations insérable et slide-out du UIViewController correspondant sont un peu saccadé aussi (mais pas beaucoup).

Toutes les CAShapeLayer a dans son path est un CGPathAddRect, il est mis à opaque, son opacity est 1.0f et le fillColor est réglé sur bleu opaque.

Lors de l'élaboration du chemin directement dans la méthode drawRect de vue, cependant, l'animation est lisse. Donc, je suppose qu'il 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 tout simplement cacher la CAShapeLayer lors de l'animation? Pour en revenir à tirer juste CGPaths directement est pas une option pour moi parce que je compte sur la capacité de CAShapeLayer pour animer son chemin (il n'est pas animé dans mes essais avec rotation de la vue).

/ mise à jour: il se produit également lorsque la vue UIViewControllers 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

Était-ce utile?

La solution 2

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

Autres conseils

Eh bien il y a une propriété de peau, 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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top