Сделать экран iPhone тусклым - PullRequest
14 голосов
/ 23 ноября 2011

Мне удалось убедиться, что iPhone не блокируется автоматически, используя:

    [[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ];

Но как сделать экран тусклым через определенное время?

Спасибо...

РЕДАКТИРОВАТЬ:

Думаю, я сам нашел решение:

Используйте этот метод в вашем контроллере представления, чтобы затемнить, добавив черный вид с 50% альфа,Убедитесь, что для userInteractionEnabled = NO установлено значение для передачи событий в базовые представления.

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

или, возможно, это может привести к риску (но Apple может отклонить отправку):

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

Это частный APIи не должен использоваться, хотя ...

Ответы [ 2 ]

26 голосов
/ 23 ноября 2011

Начиная с iOS 5, в классе UIScreen есть публичный API. Он имеет свойство brightness, которое можно установить. В тех случаях, когда вы можете захотеть потускнеть, чем позволяет фактическая подсветка, есть свойство wantsSoftwareDimming, которое автоматически поместит полупрозрачный слой, который будет выглядеть более тусклым, чем это можно сделать в аппаратном обеспечении. Это очень похоже на метод, который вы придумали с полупрозрачным UIView. Следует отметить, что использование вашего решения или программного диммирования API не должно использоваться со многими анимациями, так как вы будете платить штраф за производительность со всем альфа-смешиванием.

См. Справочник по классам UIScreen

3 голосов
/ 10 октября 2014

в iOS 7 и более поздних версиях:

yourViewController.view.tintAdjustmentMode = UIViewTintAdjustmentModeDimmed;
...