天天看点

iOS presentViewController 推出半透明窗口简单的实现方式

阅读 正确使用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方法中设置控制器的半透明颜色,就这么简单。