2011-11-22 6 views
13

He conseguido que el iPhone no hace de bloqueo automático usando:hacer que la pantalla iPhone Dim

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]; 

Pero, ¿cómo hacer que la pantalla se apague tras un determinado período de tiempo?

Gracias ...

EDIT:

creo que he encontrado una solución a mí mismo:

El uso de este método en su controlador de vista para atenuar mediante la adición de una vista de negro con un 50% de alfa. Asegúrese de establecer userInteractionEnabled = NO para pasar eventos a las vistas subyacentes.

- (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, podría correr el riesgo (pero Apple puede rechazar en la presentación):

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

Esa es una API privada y no debe ser utilizado sin embargo ...

+0

lo recomiendo publicar su edición como una respuesta en aras de la exhaustividad. –

+0

Todavía no puedo responder mis propias preguntas, creo que tengo que crear puntos o algo –

Respuesta

26

A partir de iOS 5 hay una API pública en la clase UIScreen. Tiene una propiedad brightness que se puede configurar. Para aquellos casos en los que desee oscurecerse más de lo que permite la retroiluminación real, existe una propiedad wantsSoftwareDimming que colocará automáticamente una capa translúcida que le dará la apariencia de ser más tenue de lo que se puede hacer en el hardware. Esto es muy similar al método que se le ocurrió con el translúcido UIView. Cabe señalar que el uso de su solución o la API de atenuación del software no se debe utilizar con muchas animaciones, ya que pagará una penalización de rendimiento con todas las mezclas alfa.

Ver UIScreen Class Reference

+0

Esa es una forma mucho mejor de hacerlo, gracias. –

+0

Consulte la respuesta de @ HashemAboonajmi para iOS 7+. – ToolmakerSteve

3

en iOS 7 y versiones posteriores:

yourViewController.view.tintAdjustmentMode = UIViewTintAdjustmentModeDimmed; 
Cuestiones relacionadas