我想在我的应用上显示自定义提醒面板,但在后台显示以前的UIViewController。我希望将其显示为模态视图控制器。如果没有先前的UIViewController变黑并消失,我该怎么做呢?
答案 0 :(得分:17)
您需要将其添加为子视图控制器,而不是将新vc显示为模式vc:
AlertPanelVC *alertVC = ...
[self addChildViewController: alertVC];
alertVC.view.frame = ...; //or something equivalent if you're using auto layout
[self.view addSubview: alertVC.view];
[alertVC didMoveToParentViewController: self];
解雇它:
[alertVC willMoveToParentViewController:nil];
[alertVC.view removeFromSuperview];
[alertVC removeFromParentViewController];
答案 1 :(得分:1)
以下是我使用的内容:
MyCustomAlertViewController *myCustomAlertViewController = [[MyCustomAlertViewController alloc]initWithNibName:@"MyCustomAlertViewController" bundle:nil];
myCustomAlertViewController.delegate = self; //optional if you have delegate setup
[myCustomAlertViewController setModalPresentationStyle:UIModalPresentationPageSheet];
[myCustomAlertViewController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentViewController:myCustomAlertViewController animated:YES completion:^{
//do stuff after the view is displayed.
}];
myCustomAlertViewController.view.superview.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
myCustomAlertViewController.view.superview.frame = CGRectMake(calculatedCenterX, CalculatedCenterY, myCustomAlertViewControllerWidth, myCustomAlertViewControllerHeight);
//calculatedCenterX = (1024 - myCustomAlertViewControllerWidth) / 2; //for example
//calculatedCenterY = (768 - myCustomAlertViewControllerHeight) / 2;
答案 2 :(得分:0)
有一个cool blurred组件。当然,只是品味问题。 :)
答案 3 :(得分:0)
使用UIModalPresentationFullScreen样式呈现视图控制器时,UIKit通常会在过渡动画完成后删除基础视图控制器的视图。您可以通过指定UIModalPresentationOverFullScreen样式来阻止删除这些视图。当呈现的视图控制器具有允许底层内容显示的透明区域时,您可以使用该样式。
所以基本上实例化你的viewcontroller,指定模态presenation样式,然后呈现视图控制器。
如果您想要(半)透明背景,只需调整视图控制器主视图的颜色。