Domanda

Ruoto / ridimensiono un UIVIew usando [UIView transform:] e questo funziona bene. Tuttavia, non appena cambio l'origine del frame della vista, il contenuto della vista inizia a ridimensionarsi "in modo strano" anche se non eseguo ulteriori CGAffineTransforms.

Perché questo accade? Come posso prevenirlo?

Aggiornamento 1:

I documenti suggeriscono che il frame non è valido dopo una trasformazione. Posso invece spostare la vista tramite la proprietà "center"?

Aggiornamento 2:

L'impostazione del centro visualizzazioni mi ha permesso di tradurre correttamente la vista dopo l'applicazione di una trasformazione.

È stato utile?

Soluzione

  

Posso invece spostare la vista tramite la proprietà "center"?

La documentazione definisce la proprietà center come:

  

Il centro del riquadro.

e dice:

  

Il centro è specificato nel sistema di coordinate della sua superview.

Lo proverei.

Altri suggerimenti

Dall'UIView docs :

  

transform:

     

Avviso: se questa proprietà non è la trasformazione dell'identità, il valore di   la proprietà frame non è definita e   pertanto dovrebbe essere ignorato.

La proprietà center è solo un metodo pratico che reimposta davvero l'origine del frame.

Modifica: aggiunto per rispondere al commento:

Se stai usando la proprietà transform e vuoi riposizionare la tua vista, devi concatenare la traduzione alla tua trasformazione usando:

view.transform = CGAffineTransformTranslate(view.transform, tx, tx);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top