Modificare la Luminosità della Retroilluminazione su iPhone a livello di programmazione
Domanda
Il SDK fornisce alcun modo per modificare la luminosità della retroilluminazione, o disattivarlo temporaneamente?
Soluzione
No. Questo non è disponibile nel SDK. Se si tratta di qualcosa che si pensa sarebbe utile, vi consiglio di un file di richiesta di miglioramento .
Altri suggerimenti
Sto cercando di fare la stessa cosa. Come accade ci sono un numero messaggi là nelle internet con "soluzioni" per questo.
Il più dettagliato è qui Questo è più succinta
Il problema è che ho provato questi e tutti si basano su di chiamare questa funzione
GSEventSetBacklightLevel();
che richiede questa intestazione da importare
#import <GraphicsServices/GraphicsServices.h>
E che l'importazione non riesce nel SDK riferendo che il file di intestazione non può essere trovato.
Ho cercato qualche soluzione, ma non l'ho trovato. V'è una certa parlare di "costruire la toolchain" (per la descrizione migliore che ho trovato vedere qui ), ma che sembra coinvolgere bypassando l'SDK del tutto. Abbastanza drastico.
Sommario: E 'possibile, ma non con l'iPhone SDK standard. Immagino un aggiornamento per l'SDK arriverà presto che dovrebbe consentire di esso.
Fatemi sapere se trovate qualche altra soluzione.
-(void)changeLight{
GSEventSetBacklightLevel(float number);//number between 0.0 - 1.0
}
chiamare il metodo di cui sopra utilizzando
[self performSelector:@selector(changeLight) withObject:nil afterDelay:0.0];
è possibile aggiungere il quadro privata da solo trascinare e rilasciare il tuo progetto xcode da /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework.
Anche aggiungere #import "GraphicsServices.h" intestazione per .h file..ricordate:dal momento che si sta utilizzando, nell'ambito dell'applicazione è rifiuterà in app store push
Nel mio SDK (5.0.1) sembra che "GraphicsServices.h" non c'è più, ma si può dichiarare voi stessi in questo modo:
void GSEventSetBacklightLevel(float level);
Si noti che il linker si lamenterà, a meno che non si include il GraphicsServices.framework quadro nel progetto.
A proposito di tua domanda di trasformare la retroilluminazione, ho scoperto che si può fare passando un gran numero negativo per GSEventSetBacklightLevel, in questo modo:
GSEventSetBacklightLevel(-INFINITY);
Nel mio test questo sarà completamente nero lo schermo.
Ricordate che questo potrebbe ancora causare burn-in nei pixel LCD se si visualizza la grafica statica, anche quando la retroilluminazione è spenta. E che questa chiamata causerà rifiuto, se submitteed di App Store.
provare questo codice. Spero che aiuta ...
// in viewWillAppear
galleggiare prevBrightnessLevel = .Brightness [UIScreen mainScreen];
[UIScreen mainScreen] .Brightness = 1,0;
// in viewWillDisappear
[UIScreen mainScreen] .Brightness = prevBrightnessLevel;