2009-06-26 3 views
2

Je fais pivoter/redimensionner un UIVIew en utilisant [UIView transform:] et cela fonctionne bien. Cependant, dès que je change l'origine de la vue, le contenu de la vue commence à se mettre à l'échelle «bizarrement» même si je n'effectue pas d'autres CGAffineTransforms.Redéfinir l'origine d'un UIView transformé en folie

Pourquoi cela se produit-il? Comment puis-je l'empêcher?

Mise à jour 1:

Les documents suggèrent que le cadre est invalide après une transformation. Puis-je déplacer la vue via sa propriété 'center' à la place?

Mise à jour 2:

Réglage du centre de vue ne me permet de traduire le point de vue avec succès après une transform avait été appliqué.

Répondre

3

Puis-je déplacer la vue via sa propriété 'center' à la place?

The documentation définit la propriété center que:

Le centre du cadre.

et dit:

Le centre est spécifié dans le système de coordonnées de son superview.

Je l'essayerais.

+0

J'ai essayé - ça a marché. – teabot

1

De l'UIView docs:

transform:

Attention: Si cette propriété est pas l'identité de transformation, la valeur de la propriété cadre est défini et doit donc être ignorée.

La propriété center est juste une méthode pratique qui réinitialise réellement l'origine du cadre.

Edit: ajouté à répondre à un commentaire:

Si vous utilisez la propriété transform et que vous souhaitez repositionner votre point de vue, vous devez concaténer la traduction de votre transformation à l'aide:

view.transform = CGAffineTransformTranslate(view.transform, tx, tx); 
+0

Dans quel cas - comment puis-je repositionner la vue? – teabot

+0

J'ai essayé de traduire la vue avec une transformation affine mais cela a créé beaucoup de complications qui m'ont obligé à manipuler le point d'ancrage des vues. – teabot