Ottengo buoni risultati utilizzando il metodo che hai già provato. forse giocherellare con l'alfa è una buona idea?
mask = [[UIView alloc] initWithFrame:window.frame];
[mask setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.78]];
[self.view addSubview:mask];
Poi più avanti nel codice è possibile rimuoverlo:
[mask removeFromSuperview];
or
[mask setHidden:YES];
Se si vuole rendere ancora migliore, suppongo che si potrebbe provare a utilizzare un gradiente, sia a livello di codice, o come immagine, e usando questo per scurire i bordi dello schermo in modo tale che il contenuto che stai visualizzando in primo piano sembra essere la fonte di luce.
Questo è esattamente come ho fatto, con alpha –
La tua risposta è buona ma in questo caso tutte le altre visualizzazioni non saranno più interattive. –