I get good results using the method you have already tried. maybe messing with alpha is a good idea?
mask = [[UIView alloc] initWithFrame:window.frame];
[mask setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.78]]
[self.view addSubview:mask]
Then in your code you can remove it:
[mask removeFromSuperview];
or
[mask setHidden:YES];
, , , , , , , , , .