2011-11-22 15 views
13

sono riuscito a garantire che l'iPhone non fa auto-lock con:fare lo schermo iPhone Dim

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]; 

Ma come faccio a rendere lo schermo dim dopo un certo periodo di tempo?

Grazie ...

EDIT:

credo di aver ritrovato a una soluzione:

Utilizzare questo metodo nel controller al fine di attenuare con l'aggiunta di una vista nera con il 50% di alfa. Assicurati di impostare userInteractionEnabled = NO per passare gli eventi alle viste sottostanti.

- (IBAction)dim:(id)sender { 
UIView *dimView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; 
dimView.backgroundColor = [UIColor blackColor]; 
dimView.alpha = 0.5f; 
dimView.userInteractionEnabled = NO; 
[self.view addSubview:dimView]; 
} 

o, potrebbe rischiare (ma Apple può rifiutare alla presentazione):

[(id)[UIApplication sharedApplication] setBacklightLevel:1.0f]; 

Questo è un API privato e non dovrebbe essere usato se ...

+0

mi consiglia di pubblicare la tua modifica come una risposta per ragioni di completezza. –

+0

Non riesco ancora a rispondere alle mie domande, penso di dover accumulare punti o qualcosa del genere –

risposta

26

Come di iOS 5 c'è una API pubblica nella classe UIScreen. Ha una proprietà brightness che può essere impostata. Per quelle istanze in cui è preferibile dimmerare rispetto alla retroilluminazione effettiva, esiste una proprietà wantsSoftwareDimming che posizionerà automaticamente un livello traslucido che darà l'impressione di essere più sfocato di quello che può essere fatto nell'hardware. Questo è molto simile al metodo con cui sei uscito con il traslucido UIView. Va notato che l'utilizzo della soluzione o dell'API di dimming software non deve essere utilizzato con molte animazioni poiché si paga una penalità di prestazioni con tutto il blending alfa.

Vedi UIScreen Class Reference

+0

Questo è un modo molto migliore di farlo, grazie. –

+0

Vedere la risposta di @ HashemAboonajmi per iOS 7+. – ToolmakerSteve

3

in iOS 7 e versioni successive:

yourViewController.view.tintAdjustmentMode = UIViewTintAdjustmentModeDimmed; 
Problemi correlati