J'utilise le code suivant pour faire pivoter une image, mais la moitié de l'image (en bas de l'axe y) qui a été pivotée "hors" de la page disparaît. Comment résoudre ce problème? heading
est en radians.
CALayer *layer = myUIImageView.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / 500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, heading, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;
Réponses:
32 pour la réponse № 1La solution à cela était de zPosition
propriété de toutes mes couches de manière appropriée. Merci à @Brad Larson, qui a suggéré cette solution dans un commentaire ici. Il semble que lorsque vous commencez à utiliser CATransform3D
, la hiérarchie de vues zindex normale établie par AddSubview est rejetée par la fenêtre.
5 pour la réponse № 2
layer.anchorPoint = CGPointMake(0.0, 0.0);
0 pour la réponse № 3
Réglage du anchorPoint
à {0.0, 0.0}
fonctionne aussi (comme Liam l'a déjà souligné).
Voici l'extrait de code complet pour changer le anchorPoint
sans changer la position du calque à l'écran:
layer.anchorPoint = CGPointMake( 0.0, 0.0 );
CGPoint position = layer.position;
CGSize size = layer.bounds.size;
CGFloat posX = position.x - size.width / 2.0;
CGFloat posY = position.y - size.height / 2.0;
layer.position = CGPointMake( posX, posY );