Il ripristino dell'origine di una UIView trasformata scende nella follia
-
20-08-2019 - |
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.
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);