La rotation d'un CALayer 90 degrés?
Comment faire pivoter une CALayer 90 degrés? J'ai besoin de tourner tout inclure les sous-couches et le système de coordonnées.
- N'oubliez pas de mettre la couche de point d'ancrage si nécessaire. Il ne sera pas "flip" de la même manière si vous le placez sur le milieu au lieu du dessus de votre calque
Vous devez vous connecter pour publier un commentaire.
Si je suis l'anime je utiliser quelque chose comme cela dans mes applications:
Bien sûr, vous pouvez l'utiliser n'importe où, n';t ont à retourner à partir d'une méthode si ce n';t en fonction de vos besoins.
Obj-C:
Swift:
Qui est de transformer le calque tel qu'il est tourné de 90 degrés (π /2 radians), avec 100% de la rotation de prendre place autour de l'axe z.
M_PI
est multiplié par undouble
dans la déclaration ci-dessus, il est donc élargi, défaisant le but de la fonte.Type.pi
ou tout simplement.pi
qui va utiliser le bon type (dans ce cas,CGFloat.pi
)..anchor
au centre de l'imageFondamentalement quelque chose comme ça:
CGAffineTransform rotateTransform = CGAffineTransformMakeRotation(M_PI /2.0);
[myCALayer setAffineTransform:rotateTransform];
EDIT: Il va tourner dans le sens horaire ou anti-horaire en fonction de la plate-forme (iOS ou Mac OS).
Pour faire pivoter de 90' droite:
Rab a montré comment le faire avec un
CAAnimation
objet. Sa fait plus simple que ça:(levage de la transformation de la ligne de de Chris réponse - la flemme de le réécrire puisqu'il a déjà le code.)
De Chris code serait de faire pivoter la vue sans animation. Mon code ci-dessus va faire la même chose avec animation.
Par défaut, les animations utilisation la facilité à, l'aise sur le timing. Vous pouvez changer cela avec un peu plus complexe de la version de la
animateWithDuration
appel (UtiliseranimateWithDuration:delay:options:animations:completion:
au lieu de cela, et passer dans un le temps désiré dans le paramètre options.)