2011-11-22 18 views
13

udało mi się upewnić, że iPhone nie ma automatycznej blokady przy użyciu:Dodać do ekranu iPhone Dim

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]; 

Ale jak mogę sprawić, że ekran przyciemniony po pewnym czasie?

Dzięki ...

EDIT:

Pomyśl Znalazłem rozwiązanie sobie:

użyć tej metody w kontrolerze widoku do DIM dodając czarne widok z 50% alfa. Upewnij się, że ustaw userInteractionEnabled = NO, aby przekazywać zdarzenia do odpowiednich widoków.

- (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]; 
} 

czy może zaryzykować (ale Apple może odrzucić o poddaniu):

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

To prywatny API i nie powinny być stosowane, choć ...

+0

Polecam opublikowania swojej zmienił jako odpowiedź dla kompletności wywodu. –

+0

Nie mogę jeszcze odpowiedzieć na własne pytania, myślę, że muszę budować punkty lub coś w tym stylu. –

Odpowiedz

26

W iOS 5 istnieje publiczny interfejs API w klasie UIScreen. Ma on właściwość brightness, którą można ustawić. W przypadkach, w których możesz chcieć ciemnieć, niż pozwala na to faktyczne podświetlenie, istnieje właściwość wantsSoftwareDimming, która automatycznie umieszcza warstwę półprzezroczystą, która będzie wyglądać na bardziej przyćmioną niż można to zrobić w sprzęcie. Jest to bardzo podobne do metody, którą wymyśliłeś z przezroczystym UIView. Należy zauważyć, że używanie twojego rozwiązania lub oprogramowania do przyciemniania API nie powinno być używane z wieloma animacjami, ponieważ zapłacisz karę wykonania za wszystkie bloki alfa.

Zobacz UIScreen Class Reference

+0

To o wiele lepszy sposób, dzięki. –

+0

Zobacz odpowiedź @ HashemAboonajmi na iOS 7+. – ToolmakerSteve

3

w iOS 7 i nowszych:

yourViewController.view.tintAdjustmentMode = UIViewTintAdjustmentModeDimmed; 
Powiązane problemy