2009-04-07 18 views
12

Bir pencerede bir görünüme sahip olmak ve bir iletiye yanıt vermek istiyorum (düğme veya menü) Başka bir görünüme geçmek istiyorum. ve ilk görünümün yeniden boyutlandırılmasını sağlayın.Kakao programında bir pencerenin içine ve dışına görünümü nasıl kaydırabilirim

ben bundan gitmek istiyorum: Buna

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

: Ben ille kodu aramıyorum

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

, başlatmak için nerede bir fikir mutluluk duyacağız.

Bu masaüstü uygulaması içindir.

cevap

19

CoreAnimation kesinlikle en iyi bahistir. Ben herhangi CA kodu ile çalıştık bir süre beri, ama bir şey gibi etti:

[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]; 

Düzenleme::

[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]; 

Daha sonra, kullanarak tek görünüme geri dönebilirler Yukarıdaki kod iPhone için soruyu biraz hızlı okudum. Mac'te

, siz (benzer) kullanmak isteyeyim:

, varsayılan yaklaşık 0.25 saniye
[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 iPhone, değil Mac üzerinde kullanılabilir deneyebilirsiniz. Mac'te, NSAnimationContext'i gruplandırma için ve herView.frame yerine herView.animator.frame kullanmanız gerekir. –

+0

İyi bir çağrı, dipteki notu yakalamadım. Cevap güncellendi, teşekkürler! –

+0

Herkese teşekkürler. Bir deneyeceğim. – Abizern

1

Hiç denemedim, ancak CoreAnimation'ın bunun için ilginç özelliklere sahip olduğunu düşünüyorum. Görünümün1 yüksekliğini tam yükseklikte yarım yüksekliğe ve görünümün2 görünümünün süper görünümünün üst yarısına kadar ortalamasını yapmanız gerekir.

2
Eğer animasyon bloğu için bir süre belirlerseniz yoksa Bu unutulmamalıdır

olan Aslında çoğu durumda çok iyi çalışıyor gibi görünüyor.

CoreAnimation ile denemeler yaparken ilk önce bu süreyi denemenizi öneriyorum.

İlgili konular