阅读 正确使用PresentModalViewController 后,并参考了其他大牛的方法有所心得。要想实现presentViewController 推出半透明窗口并不是那么难。
ChooseLocationController *locationVc = [[ChooseLocationController alloc]init];
[locationVc setModalPresentationStyle:UIModalPresentationOverCurrentContext];//关键代码
......
[self presentViewController:locationVc animated:NO completion:nil];
当然如果你不想在这里设置弹出窗口弹出风格,你可以尝试在 'chooseLocationController'中设置,让每个控制器推出它时,它的背景都为半透明状态,而不是黑色背景,您可以尝试在chooseLocationController 中设置
- (instancetype)init
{
self = [super init];
if (self) {
// 关键的弹幕,让此控制器背景 为 设置的半透明颜色
if ([[[UIDevice currentDevice] systemVersion] floatValue]>=8.0) {
self.modalPresentationStyle=UIModalPresentationOverCurrentContext;
}else{
self.modalPresentationStyle=UIModalPresentationCurrentContext;
}
//
self.providesPresentationContextTransitionStyle = YES;
self.definesPresentationContext = YES;
}
return self;
}
当然你需要在viewDidLoad方法中设置控制器的半透明颜色,就这么简单。