Ho una vista che voglio ridimensionare e tradurre in una nuova posizione animandola. Ho cercato di raggiungerlo con il seguente codice:Animazione UIVIew - Ridimensionamento + Traduzione
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:kDurationForFullScreenAnimation];
[[self animatingView] setFrame:finalRect];
[UIView commitAnimations];
L'effetto di questo codice è, la vista cambia prima grandezza del suo contenuto al finalRect e poi traduce nella nuova posizione. Ad esempio, la parte di ridimensionamento non è mai animata. La vista viene semplicemente trasformata nella nuova dimensione e quindi tradotta.
Questo problema è già stato discusso in diversi altri thread, ma nessuno di essi trarrà una conclusione. Tuttavia, esiste una soluzione, per utilizzare un timer e impostare il frame ogni volta nel callback del timer, ma ha un inconveniente di prestazioni.
Qual è la soluzione più appropriata a questo problema, inoltre, perché nel primo caso si verifica questo problema?
Grazie
Il fatto è che, se faccio in questo modo, il contenuto di vista e tutte le sue sotto-vista assumere la newRect subito . Non sono animati al nuovo frame. Come dire che hai un imageView come subView alla vista di animazione, l'immagine in imageView non viene ridimensionata gradualmente. Piuttosto, l'immagine viene prima ingrandita fino al nuovoRect e quindi i valori di scala della vista + si traducono.Tuttavia, la modifica del centro funziona nel blocco dell'animazione, ma la modifica dei limiti non funziona come previsto. –