SORU
1 Mart 2011, Salı


bir animasyon ile Sekmeler arasında geçiş Nasıl?iPhone:

Sekmeler programlı sekme çubuğu tahrik uygulaması UITabBarController.selectedIndex kullanarak geçiyorum. Çözmeye çalışıyorum sorunu görünümler arasında geçiş animasyon. yani. seçili sekme görüntülemek için geçerli sekme görünümü.

İlk düşünce UITabBarControllerDelegate, ama bu adlı göründüğünde Program aracılığıyla geçiş sekmeleri kullanılmasıydı. Olası bir kanca bir geçiş animasyon ayarlamak için. şimdi UITabBarDelegate.didSelectItem düşünüyorum:

Kimse yönetilen geçişler animasyon vardır? Evet ise, nasıl ?

CEVAP
3 Mart 2011, PERŞEMBE


Uzun araştırmalardan sonra, iki çalışma çözümleri ile geldim. Bunların her ikisi de çalıştı ve sekmeler arasında animasyon yaptım.

Çözüm 1: görünüm (basit) geçiş

Bu en kolay ve önceden tanımlanmış UİView bir geçiş yöntemi kullanır. Bu çözüm yöntemi bizim için işleri nedeniyle görünümleri yönetmek için ihtiyacımız yok.

// Get views. controllerIndex is passed in as the controller we want to go to. 
UIView * fromView = tabBarController.selectedViewController.view;
UIView * toView = [[tabBarController.viewControllers objectAtIndex:controllerIndex] view];

// Transition using a page curl.
[UIView transitionFromView:fromView 
                    toView:toView 
                  duration:0.5 
                   options:(controllerIndex > tabBarController.selectedIndex ? UIViewAnimationOptionTransitionCurlUp : UIViewAnimationOptionTransitionCurlDown)
                completion:^(BOOL finished) {
                    if (finished) {
                        tabBarController.selectedIndex = controllerIndex;
                    }
                }];

Çözüm 2: kaydırma (daha karmaşık)

Daha karmaşık bir çözüm, ama animasyonun daha fazla kontrol sağlar. Bu örnekte bir haber için görüşlerini alacağız. Bu görüşlerini kendi kendimizi idare etmeliyiz.

// Get the views.
UIView * fromView = tabBarController.selectedViewController.view;
UIView * toView = [[tabBarController.viewControllers objectAtIndex:controllerIndex] view];

// Get the size of the view area.
CGRect viewSize = fromView.frame;
BOOL scrollRight = controllerIndex > tabBarController.selectedIndex;

// Add the to view to the tab bar view.
[fromView.superview addSubview:toView];

// Position it off screen.
toView.frame = CGRectMake((scrollRight ? 320 : -320), viewSize.origin.y, 320, viewSize.size.height);

[UIView animateWithDuration:0.3 
                 animations: ^{

                     // Animate the views on and off the screen. This will appear to slide.
                     fromView.frame =CGRectMake((scrollRight ? -320 : 320), viewSize.origin.y, 320, viewSize.size.height);
                     toView.frame =CGRectMake(0, viewSize.origin.y, 320, viewSize.size.height);
                 }

                 completion:^(BOOL finished) {
                     if (finished) {

                         // Remove the old view from the tabbar view.
                         [fromView removeFromSuperview];
                         tabBarController.selectedIndex = controllerIndex;                
                     }
                 }];

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CasinoRoyaleMovie's channel

    CasinoRoyale

    1 AĞUSTOS 2006
  • Google

    Google

    18 EYLÜL 2005
  • Mark Halberstadt

    Mark Halbers

    19 ŞUBAT 2010