Изменить яркость подсветки на iPhone программно - PullRequest
2 голосов
/ 14 декабря 2008

Предоставляет ли SDK какой-либо способ изменить яркость подсветки или временно ее отключить?

Ответы [ 5 ]

5 голосов
/ 22 января 2009

Я пытаюсь сделать то же самое. Как это бывает, в интернете есть несколько постов с «решениями» для этого.

Самый подробный здесь Этот более лаконичный

Проблема в том, что я пробовал это, и все они полагаются на вызов этой функции

GSEventSetBacklightLevel();

, для которого требуется импортировать этот заголовок

#import <GraphicsServices/GraphicsServices.h>

И этот импорт завершается неудачно в SDK, сообщая, что заголовочный файл не найден.

Я искал какое-то решение, но не нашел его. Есть некоторые разговоры о «построении цепочки инструментов» (лучшее описание, которое я нашел, смотрите здесь ), но это, похоже, предполагает обход SDK в целом. Довольно резкий.

Резюме: это возможно, но не со стандартным iPhone SDK. Я предполагаю, что скоро появится обновление SDK, которое должно позволить это.

Дайте мне знать, если вы найдете какое-либо другое решение.

1 голос
/ 14 декабря 2008

Нет. Это не доступно в SDK. Если это то, что вы считаете полезным, я предлагаю вам подать запрос на улучшение .

0 голосов
/ 30 января 2013

попробуйте этот код. надеюсь, это поможет ...

// в поле зренияWillAppear

float prevBrightnessLevel = [UIScreen mainScreen] .brightness;

[UIScreen mainScreen] .brightness = 1,0;

// в поле зрения исчезнуть

[UIScreen mainScreen] .brightness = prevBrightnessLevel;

0 голосов
/ 07 марта 2012

В моем SDK (5.0.1) кажется, что "GraphicsServices.h" больше не существует, но вы можете объявить его себе так:

void GSEventSetBacklightLevel(float level);

Обратите внимание, что компоновщик будет жаловаться, если вы не включите фреймворк GraphicsServices.framework в свой проект.

По поводу вашего вопроса об отключении подсветки я обнаружил, что вы можете сделать это, передав очень большое отрицательное число в GSEventSetBacklightLevel, например:

GSEventSetBacklightLevel(-INFINITY);

В моих тестах это полностью затемнит экран.

Помните, что это может привести к прожиганию пикселей ЖК-дисплея, если вы отображаете статическую графику, даже если подсветка выключена. И этот вызов вызовет отклонение, если он будет отправлен в магазин приложений.

0 голосов
/ 04 августа 2011
-(void)changeLight{

    GSEventSetBacklightLevel(float number);//number between 0.0 - 1.0
}

вызовите вышеуказанный метод, используя

[self performSelector:@selector(changeLight) withObject:nil afterDelay:0.0];

вы можете добавить частную платформу, просто перетащив ее в свой проект xcode из /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework.

Также добавьте заголовок #import "GraphicsServices.h" в свой файл .h. помните: поскольку вы используете частную среду, ваше приложение будет отклонено в магазине приложений push

...