2009-11-05 13 views
11

Ich habe eine funktionierende Übergang mit UIViewAnimationTransitionCurlUp jedoch möchte ich die Animation auf halbem Weg durch, ähnlich wie die Maps-Anwendung ... Irgendwelche Gedanken, wie dies zu erreichen?Teilweise Seite curl Animation

Antwort

1

Der Map Particrell ist eine private API. Sie finden Details zur Verwendung in Erica Saduns Buch The iPhone Developer's Cookbook, aber Sie werden aus dem App Store zur Verwendung abgelehnt.

+0

Gut zu wissen ... Schätze, ich werde dann nur einen Seitenwechsel durchführen. – rson

+0

Ab iOS 3.2 gilt dies nicht mehr. – tJener

0

Nicht sicher, ob dies funktioniert, aber der Parameter +setAnimationRepeatCount: kann ein Bruch sein.

+0

Wenn ich das tue, dann verschwindet der Übergang zusammen mit der Ansicht ... – rson

11

In iOS 3.2 und höher können Sie Ihre UIViewController eine UIModalTransitionStyleUIModalTransitionStylePartialCurl geben. Vom UIViewControllerreference sehen wir

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

So ein Beispiel Anwendungsfall wäre:

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

Wenn Sie dies tun möchten, aber eine untere Symbolleiste beibehalten (z. B. keine Vollbild-Curl), finden Sie in meiner Lösung [hier] (http://stackoverflow.com/a/11406056/1148702) –

7

ich eine Lösung gefunden, eine UIView UIViewController mit Animationsblock hinzuzufügen.

m_Container ist eine UIView, die meine Ansichtsanimation (self) enthält. Selbst ist eine UIView.

ACHTUNG: Sie müssen Import Quartz haben

Um Ansicht mit Seite curl Animation präsentieren Sie verwenden können:

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

Und wenn Sie diese Ansicht verbergen möchten, können Sie verwenden:

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

         ;} 
    ]; 

} 

Ich hoffe, ich habe dir geholfen.

+0

Ist das? private API? Es scheint perfekt zu funktionieren, aber ich sehe es nicht in der Dokumentation. – SG1

+0

Dies ist keine private API, ich verwende nur UIView-Methoden, um eine Ansicht zu animieren (m_container für mich). Sie müssen nur Methodeninhalte in Ihre eigenen Methoden kopieren und m_container durch Ihre Ansicht ändern ... – TheRonin

Verwandte Themen