閱讀 正确使用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方法中設定控制器的半透明顔色,就這麼簡單。