2009-11-05 19 views
11

UIViewAnimationTransitionCurlUp'u kullanarak bir çalışma geçişim var, ancak animasyonlar Google Haritalar uygulamasında olduğu gibi yarı yolda durmasını istiyorum ... Buna nasıl ulaşacağınıza dair herhangi bir düşünce var mı?Kısmi sayfa curl animasyonu

cevap

1

Maps kısmi kıvrımı özel bir API'dir. Bunu Erica Sadun'un The iPhone Developer's Cookbook numaralı kitabında nasıl kullanacağınızla ilgili ayrıntıları bulabilirsiniz, ancak bunu kullanmak için App Store'dan reddedilecektir.

+0

Bilinmesi gerekenler ... Galiba sadece bir sayfa çevirme geçişi yapacağım o zaman. – rson

+0

iOS 3.2'den itibaren, bu artık doğru değil. – tJener

0

Bunun işe yarayacağından emin değilsiniz, ancak +setAnimationRepeatCount: parametresi bir kesir olabilir.

+0

Eğer bunu yaparsam, o zaman geçişle birlikte geçiş de ortadan kalkar ... – rson

11

iOS 3.2 ve daha sonraki sürümlerde, UIViewController numaralı telefonunuzunumaralı telefondan UIModalTransitionStyle numarasına verebilirsiniz. UIViewControllerreference itibaren biz

typedef enum { 
    UIModalTransitionStyleCoverVertical = 0, 
    UIModalTransitionStyleFlipHorizontal, 
    UIModalTransitionStyleCrossDissolve, 
    UIModalTransitionStylePartialCurl, 
} UIModalTransitionStyle; 

Yani bir örnek kullanım durumu olurdu bkz:

UIViewController *viewController; 
// …create or retrieve your view controller… 

// Note: The modalPresentationStyle must be UIModalPresentationFullScreen, 
//  and the presenter must also be a full-screen view 
viewController.modalPresentationStyle = UIModalPresentationFullScreen; 
viewController.modalTransitionStyle = UIModalTransitionStylePartialCurl; 
+1

Bunu yapmak istiyorsanız, ancak alt bir araç çubuğunu koruyun (ör. Tam ekran kıvrılma değil), çözümüme bakın [here] (http://stackoverflow.com/a/11406056/1148702) –

7

Ben Animasyon bloğu kullanarak UIViewController bir UIView eklemek için bir çözüm buldu.

m_Container, görünüm animasyonumu (kendim) içeren bir UIView'dir. kendini bir UIView.

DİKKAT: sayfa kıvrımı animasyon ile görünüm sunmak

Sen kullanabilirsiniz ithalat QuartzCore olması gerekir:

-(void)PresentView 
{ 
    [UIView animateWithDuration:1.0 
        animations:^{ 
         CATransition *animation = [CATransition animation]; 
         [animation setDelegate:self]; 
         [animation setDuration:0.7]; 
         [animation setTimingFunction:UIViewAnimationCurveEaseInOut]; 
         animation.type = @"pageCurl"; 
         animation.fillMode = kCAFillModeForwards; 
         animation.endProgress = 0.65; 
         [animation setRemovedOnCompletion:NO]; 
         [m_container.layer addAnimation:animation forKey:@"pageCurlAnimation"]; 
         [m_container addSubview:self]; 
         ;} 
    ];  
} 

Ve bu görüşü gizlemek istediğinizde kullanabilirsiniz:

-(void)HideHelpView 
{ 
    [UIView animateWithDuration:1.0 
        animations:^{ 
         CATransition *animation = [CATransition animation]; 
         [animation setDelegate:self]; 
         [animation setDuration:0.7]; 
         [animation setTimingFunction:UIViewAnimationCurveEaseInOut]; 
         animation.type = @"pageUnCurl"; 
         animation.fillMode = kCAFillModeForwards; 
         animation.startProgress = 0.35; 
         [animation setRemovedOnCompletion:NO]; 
         [m_container.layer addAnimation:animation forKey:@"pageUnCurlAnimation"]; 
         [self removeFromSuperview]; 

         ;} 
    ]; 

} 

Umarım size yardımcı olurum.

+0

Bu mu? özel API? Mükemmel çalışıyor gibi görünüyor, ancak dokümanlar görmüyorum. – SG1

+0

Bu özel bir API değildir, yalnızca bir görüntüyü canlandırmak için UIView yöntemlerini kullanıyorum (benim için m_container). Yöntemleri kendi yöntemlerinizle kopyalamanız ve m_container'ınızı görünümünüze göre değiştirmeniz yeterlidir. – TheRonin