Uzyskuję dobre wyniki, korzystając z metody, którą już wypróbowałeś. może błądzenie z alfą to dobry pomysł?
mask = [[UIView alloc] initWithFrame:window.frame];
[mask setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.78]];
[self.view addSubview:mask];
Później w kodzie można go usunąć:
[mask removeFromSuperview];
or
[mask setHidden:YES];
Jeśli chcemy, aby było jeszcze lepiej, przypuszczam, że można spróbować, stosując gradient, zarówno programowo, lub jako obraz, i za pomocą tego, aby przyciemnić krawędzie ekranu tak, aby wyświetlana zawartość była źródłem światła.
Tak właśnie zrobiłem, z alfa –
Twoja odpowiedź jest dobra, ale w tym przypadku wszystkie inne subviews nie będą już interaktywne. –