2010-05-29 14 views
5

Chcę animować skalowanie w dół UIView, ale nie o jego środku: o innym punkcie.iPhone: Skaluj UIView o określonym punkcie.

Jako strzał w ciemność, próbowałem przetłumaczyć widok, skalować, a następnie tłumaczyć, używając serii CGAffineTransforms. Ale to nie działa: wciąż skaluje się wokół centrum.

Ktoś wie, jak to zrobić?

Dziękuję bardzo.

Odpowiedz

12

Dodaj ramy kwarcowy do projektu i importować nagłówek Quartz

#import <QuartzCore/QuartzCore.h> 

Następnie można ustawić punkt zakotwiczenia widoku (wokół którego animacje oparte są na przykład)

myView.layer.anchorPoint = CGPointMake(0, 0); 

Należy pamiętać, że punkty są wartości od 0 do 1, przy czym górny lewy 0,0 na iPhone

+1

Proszę rozważyć oznaczenie moją odpowiedź jako odpowiedział gdyby był pomocny. – RunLoop

+2

Dziękuję bardzo; to rzeczywiście działa. Jednak jeden z dalszych problemów: nie powiedziałem, że używam skalowania do efektu "odbijania". Omawiany widok nieco się zmniejsza, a następnie powraca do normalnego rozmiaru. Korzystanie z podejścia "anchorPoint" odpowiednio zmniejsza widok, ale gdy ponownie rozwijam widok (używając macierzy tożsamości dla transformacji), cały widok został nieco przesunięty (przetłumaczony). Czy jest jakiś sposób, aby przywrócić ten widok do pierwotnej lokalizacji w powtarzalny, niezależny od anchorPoint sposób? Dzięki! –

+0

To, co może być łatwiejsze, polega na ustawieniu początków i rozmiarów ramki widoku, tak aby odzwierciedlały punkt końcowy i punkt początkowy oraz zawierały animację. Znalazłem to łatwiejsze podejście. – RunLoop

Powiązane problemy