2009-04-07 16 views
12

Chcę mieć widok na okno iw odpowiedzi na wiadomość (kliknięcie przycisku lub menu) Chcę, aby następny widok był z góry z góry i zmień rozmiar pierwszego widoku.Jak przesuwać widok z okna programu Cocoa?

Chcę iść z tego:

********************************** 
*        * 
*--------------------------------* 
*|        |* 
*|  view 1    |* 
*|        |* 
*--------------------------------* 
*        * 
********************************** 

do tego:

********************************** 
*        * 
*--------------------------------* 
*|  view 2    |* 
*--------------------------------* 
*--------------------------------* 
*|  view 1    |* 
*--------------------------------* 
*        * 
********************************** 

Ja nie koniecznie szuka kodu, pomysł gdzie zacząć będą mile widziane.

To jest dla aplikacji komputerowej.

Odpowiedz

19

CoreAnimation jest zdecydowanie najlepszym wyborem. Minęło trochę czasu odkąd pracował z jakiegokolwiek kodu CA, ale coś takiego:

[UIView beginAnimations:@"slideOn" context:nil]; 

firstView.frame = shrunkFirstViewRect; // The rect defining the first view's smaller frame. This should resize the first view 

secondView.frame = secondViewOnScreenFrame; // This should move the second view on the frame. 

[UIView commitAnimations]; 

Później można powrócić do pojedynczego widoku przy użyciu:

[UIView beginAnimations:@"slideOff" context:nil]; 

firstView.frame = normalFirstViewRect; // The rect defining the first view's normal frame. This should expand the first view. 

secondView.frame = secondViewOffScreenFrame; // Move the second view off the screen 

[UIView commitAnimations]; 

Edycja: Powyższy kod jest dla iPhone'a, czytam twoje pytanie trochę szybko.

Na Mac, co chcesz użyć (podobnie):

[NSAnimationContext beginGrouping]; 
[[NSAnimationContext currentContext] setDuration:1.0f]; // However long you want the slide to take 

[[firstView animator] setFrame:shrunkFirstViewRect]; 

[[secondView animator] setFrame:secondViewOnScreenFrame]; 

[NSAnimationContext endGrouping]; 
+2

UIKit jest dostępny tylko na iPhone, a nie Mac. Na komputerze Mac musisz użyć NSAnimationContext do grupowania i eachView.animator.frame zamiast eachView.frame. –

+0

Dobra rozmowa, nie złapałem notatki na dole. Zaktualizowana odpowiedź, dzięki! –

+0

Dzięki wszystkim. Dam temu szansę. – Abizern

1

Nigdy nie próbowałem, ale myślę, że CoreAnimation ma ciekawe funkcje do tego. Musisz animować wysokość widoku1 od pełnej wysokości do połowy wysokości i pozycji widoku2 spoza jego widoku do górnej połowy.

2

Należy zauważyć, jeśli nie ustawić czas dla bloku animacji, domyślnie wynosi około 0,25 sekundy, które wydaje się, że w większości przypadków działa bardzo dobrze.

Proponuję wypróbować ten czas za pierwszym razem, gdy eksperymentuję z CoreAnimation.

Powiązane problemy