2013-04-03 5 views
7

Ich setze self.window.rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext; in meinem Application Delegate, damit ich einen View-Controller präsentieren kann und die Ansicht transparent sein muss (siehe SO question).Präsentieren eines View-Controllers mit Transparenz und Animation

Das funktioniert gut, nur Bemerkung ist, dass ich nicht animieren kann, wenn der View-Controller präsentiert wird. Hat jemand das zur Arbeit gebracht? Wenn nicht, welche anderen Optionen habe ich?

Der View-Controller, den ich vorstelle, ist ein "Walkthrough", der aus UIScrollView und UIPageControl besteht, der über die Schnittstelle "schweben" soll, so dass Sie den Hintergrund leicht an den Rändern sehen können.

Antwort

9

landete ich dies zu tun:

AppDelegate *appDelegate = [AppDelegate sharedAppDelegate]; 

// Set the root VC modal presentation style 
appDelegate.window.rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext; 

WalkthroughViewController *walkthroughVC = [[WalkthroughViewController alloc] initWithNibName:nil bundle:nil]; 

[self presentViewController:walkthroughVC animated:NO completion:nil]; 

// Manually animate the view 
walkthroughVC.view.alpha = 0; 
[UIView animateWithDuration:0.5 animations:^{ 
     walkthroughVC.view.alpha = 1; 
}]; 

// Reset root VC modal presentation style 
appDelegate.window.rootViewController.modalPresentationStyle = UIModalPresentationFullScreen; 
+0

Dies ist auch nützlich für mich, wenn ich von AppDelegate zurückrufe (zum Beispiel Twitter-Authentifizierung Rückruf), und präsentiert transparente View-Controller. – morph85

0

Sie können eine Containment-Ansicht verwenden, die im Basisansicht-Controller vorhanden ist. Anstatt ein Modal zu präsentieren, animieren Sie die Positionierung der Containment-Ansicht, um eine modale Präsentation zu simulieren.

Zum Beispiel ...

TransparentViewController *viewController = [[TransparentViewController alloc] init]; 
viewController.view.frame = CGRectMake(0, 480, 320, 480); 
self.containmnetView = viewController.view; 

zu präsentieren Um dies zu tun:

[UIView animateWithDuration:0.5f animations:^{ 
    self.containmentView.frame = CGRectMake(0, 0, 320, 480); 
}]; 

Ich hoffe, das hilft.

+0

Hmm Sie den Faden zu sehen habe ich bezog? –

+0

Ah verstehe ich jetzt, redigierte meine Antwort. Hoffe das hilft. –

Verwandte Themen