Question

Je suis en train de créer une application iPad et que vous souhaitez mettre à jour l'utilisateur avec la taille actuelle d'une vue. Je l'habitude de faire cela en calculant l'échelle d'un CGAffineTransform et en multipliant le xScale par la largeur (de la vue correspondante) et la yScale par la hauteur. Je voudrais continuer à le faire, mais je ne suis plus faire des transformations 2D, et je suis sûr de ce que l'équation à utiliser pour extraire l'information à l'échelle de CATransform3D.

Pouvez-vous aider?

Était-ce utile?

La solution

Pour obtenir l'échelle actuelle de la couche que vous venez d'effectuer une valueForKeyPath: sur la couche:

CGFloat currentScale = [[layer valueForKeyPath: @"transform.scale"] floatValue];

D'autres touches peuvent être trouvées dans Apples Core animation Guide de programmation

Autres conseils

Je ne suis pas familier avec l'API, mais ressemble CATransform3D comme une matrice de transformation régulière 4x4 pour faire des transformations 3D.

En supposant qu'il représente rien de plus qu'une combinaison d'échelle, la rotation et la translation, les facteurs d'échelle peuvent être extraits par le calcul des grandeurs de l'une des rangées ou des colonnes de la 3x3 supérieure gauche selon que CATransform3D est rangée ou colonne principale respectivement .

Par exemple, si elle est rangée principale, l'échelle dans la direction x est la racine carrée de (m11 m11 *) + (m12 m12 *) + (m13 m13 *). Les échelles de y et z serait de même des amplitudes des deuxième et troisième rangées.

De la documentation

scroll top