Mam widok, który chcę przeskalować i przetłumaczyć w nowe miejsce, animując go. Starałem się go osiągnąć za pomocą następującego kodu:UIView animation - Skalowanie + Tłumaczenie
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:kDurationForFullScreenAnimation];
[[self animatingView] setFrame:finalRect];
[UIView commitAnimations];
Efektem tego kodu jest, że widok najpierw zmienia rozmiar jego treść do danego finalRect a następnie przekłada je do nowej lokalizacji. tj. część skalująca nigdy nie jest animowana. Widok jest właśnie przekształcany do nowego rozmiaru, a następnie tłumaczony.
Ten problem jest już omówiony w kilku innych wątkach, ale żaden z nich nie wyciąga wniosków. Istnieje jednak rozwiązanie, aby użyć zegara i ustawić ramkę za każdym razem w oddzwanianiu timera, ale ma ona wadę wydajności.
Jakie jest najodpowiedniejsze rozwiązanie tego problemu, także dlaczego w pierwszym przypadku występuje ten problem?
Dzięki
Rzecz w tym, jeśli to zrobię tak, zawartość widzenia oraz wszystkich jej sub-views natychmiast zakładają newRect . Nie są animowane do nowej klatki. Tak jak na przykład, że masz imageView jako subView do animowanego widoku, obraz w imageView nie jest skalowany stopniowo. Zamiast tego obraz jest najpierw wysadzany w powietrze do nowej wartości, a następnie skala widoku + przesuwa się.Zmiana centrum działa jednak w bloku animacji, ale zmiana granic nie jest zgodna z oczekiwaniami. –