Bene, puoi disattivare completamente la luminosità. Non blocca lo schermo e il dispositivo continua a essere visualizzato ma nessuna retroilluminazione LCD lo rende quasi impossibile da vedere.
- (void) changeSystemBrightness: (NSString *) switchValue {
if ([[UIScreen mainScreen] respondsToSelector:@selector(setBrightness:)]) {
if (switchValue) {
if ([switchValue isEqualToString:@"saveDefault"]) {
//
self.userBrightness = [UIScreen mainScreen].brightness;
//NSLog(@"User Brightness: %1.1f", userBrightness);
} else if ([switchValue isEqualToString:@"restoreDefault"]) {
[UIScreen mainScreen].brightness = self.userBrightness;
//NSLog(@"Restore Brightness: %1.1f", userBrightness);
} else if ([switchValue isEqualToString:@"min"]) {
//[UIScreen mainScreen].brightness = 0;
} else if ([switchValue isEqualToString:@"max"]) {
[UIScreen mainScreen].brightness = 1;
} else if ([switchValue isEqualToString:@"mid"]) {
[UIScreen mainScreen].brightness = 0.5;
}
} else {
[UIScreen mainScreen].brightness = self.userBrightness;
//NSLog(@"Restore Brightness: %1.1f", userBrightness);
}
}
}
Prima salvare il livello di luminosità del sistema dell'utente
[self changeSystemBrightness:@"saveDefault"];
Dopo di che si può semplicemente spegnere lo schermo:
[self changeSystemBrightness:@"min"];
ripristinare la luminosità:
[self changeSystemBrightness:@"restoreDefault"];
iOS ripristina la luminosità predefinita del sistema una volta che lo schermo è stato spento normalmente (blocco/sblocco), quindi è necessario rilevare e gestirlo.
Per chi legge questo, al momento del mio commento, il metodo è stato deprecato. Dalla documentazione di Apple: "Deprecato. Le proprietà' proximityMonitoringEnabled' e 'proximityState' della classe' UIDevice' sono le sostituzioni. " –