2009-11-05 4 views
11

У меня есть рабочий переход с использованием UIViewAnimationTransitionCurlUp, однако мне хотелось бы, чтобы анимация остановилась на полпути, как приложение Maps ... Любые мысли о том, как этого достичь?Частичная анимация завитка страницы

ответ

1

Частичный скручивание карт - частный API. Вы можете найти подробную информацию о том, как использовать его в книге Эрика Садун The iPhone Developer's Cookbook, но вы получите отказ от использования в App Store.

+0

Полезно знать ... Угадайте, я просто сделаю переход с переводом страницы. – rson

+0

Начиная с iOS 3.2, это уже не так. – tJener

0

Не уверен, что это сработает, но параметр +setAnimationRepeatCount: может быть долей.

+0

Если я это сделаю, тогда переход вместе с видом исчезнет ... – rson

11

В iOS 3.2 и более поздних версиях вы можете указать UIViewController a UIModalTransitionStyle из UIModalTransitionStylePartialCurl. Из UIViewControllerreference мы видим

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

Так пример случай использования будет:

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

Если вы хотите сделать это, но сохраните нижнюю панель инструментов (например, не полный скручивание), см. Мое решение [здесь] (http://stackoverflow.com/a/11406056/1148702) –

7

Я нашел решение, чтобы добавить UIView к UIViewController с помощью анимации блока.

m_Container - это UIView, который содержит анимацию моего представления (self). Я - UIView.

ВНИМАНИЕ: Вы должны иметь импортировать QuartzCore

Чтобы представить вид с страницы завиток анимации вы можете использовать:

-(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]; 
         ;} 
    ];  
} 

И когда вы хотите скрыть эту точку зрения вы можете использовать:

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

         ;} 
    ]; 

} 

Надеюсь, я помог вам.

+0

Это частный API? Кажется, что он работает отлично, но я не вижу его в документах. – SG1

+0

Это не частный API, я просто использую методы UIView для анимации представления (m_container для меня). Вам просто нужно скопировать содержимое методов в свои собственные методы и изменить m_container по вашему представлению ... – TheRonin