呈现具有透明度和动画的视图控制器

时间:2013-04-03 15:19:05

标签: ios cocoa-touch animation uiviewcontroller transparency

我在我的应用程序代理中设置self.window.rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;,以便我可以呈现视图控制器并使视图透明(请参阅此SO question)。

这很好用,唯一的一点是我在呈现视图控制器时无法动画。有没有人得到这个工作?如果没有,我还有其他选择吗?

我所呈现的视图控制器是一个“演练”,由UIScrollViewUIPageControl组成,它应该“悬停”在界面上,以便您可以稍微看到它的背景边缘。

2 个答案:

答案 0 :(得分:9)

我最终这样做了:

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;

答案 1 :(得分:0)

您可以使用基本视图控制器中存在的包含视图。而不是呈现模态,为包容视图的定位设置动画,以模拟模态演示。

例如......

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

要做到这一点:

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

我希望这会有所帮助。