2013-04-03 15 views
7

Ustawiam self.window.rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext; w moim Delegacie aplikacji, dzięki czemu mogę przedstawić kontroler widoku i mieć przejrzysty widok (patrz: SO question).Przedstawianie kontrolera widoku z przezroczystością i animacją

Działa to świetnie, tylko uwaga jest taka, że ​​nie jestem w stanie animować, gdy jest wyświetlany kontroler widoku. Czy ktokolwiek to zrobił? Jeśli nie, jakie mam inne opcje?

Przedstawiony kontroler widoku to "przewodnik", który składa się z UIScrollView i UIPageControl, który ma "unieść się" nad interfejsem, dzięki czemu można zobaczyć jego tło nieco na krawędziach.

Odpowiedz

9

skończyło się w ten sposób:

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

Jest to przydatne także dla mnie, gdy oddzwonię z AppDelegate (na przykład wywołanie zwrotne uwierzytelniania na Twitterze) i przedstawiam przezroczysty kontroler widoku. – morph85

0

Można użyć widoku zamknięcia, który istnieje w kontrolerze widoku podstawowego. Zamiast prezentacji modalu, animuj pozycjonowanie widoku zamknięcia, aby symulować prezentację modalną.

Na przykład ...

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

Aby przedstawić to zrobić:

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

Mam nadzieję, że to pomaga.

+0

Hmm widziałaś wątek miałem na myśli? –

+0

Ah Rozumiem teraz, zredagowałem moją odpowiedź. Mam nadzieję że to pomoże. –

Powiązane problemy