Наблюдается ли значение ключа [UIScreen mainScreen].brightness?

Вот что я делаю в этом приложении iO7 или более поздней версии:

Когда пользователь открывает мое приложение, я хочу получить значение яркости экрана и полностью увеличить яркость. Когда пользователь покидает приложение, я хочу, чтобы яркость вернулась к предыдущему значению.

Пока я использую это:

-(void) applicationWillResignActive
{
    [[UIScreen mainScreen] setBrightness:oldScreenBrightness];
}

-(void) applicationDidBecomeActive
{
    screenBrightness = [UIScreen mainScreen].brightness;
    [[UIScreen mainScreen] setBrightness:1.0];
}

Это работает нормально, за исключением того, что если пользователь регулирует яркость через Центр управления ВО ВРЕМЯ использования приложения, он все равно вернется к старой яркости при выходе из приложения, когда этого не должно быть.

Поэтому мне было интересно, могу ли я Key Value Observe [UIScreen mainScreen].brightness и проверить, было ли оно изменено пользователем, чтобы не возвращать его к старому значению....


person Gizmodo    schedule 29.09.2014    source источник
comment
Вы пробовали? Сначала попробовать самому — это быстрее, чем задавать вопрос и ждать ответа.   -  person rmaddy    schedule 30.09.2014
comment
Также есть уведомление UIScreenBrightnessDidChangeNotification. Попробуйте.   -  person rmaddy    schedule 30.09.2014


Ответы (2)


Я думаю, вы слишком усложняете это. На выходе проверьте текущий уровень яркости. Если это 1.0, переключите его обратно на то, что у вас было, когда вы начали. Если это не 1.0, вы можете быть уверены, что пользователь изменил его на что-то другое, поэтому ничего не делайте.

Также, вероятно, лучше всего создать какую-то константу для яркости экрана, чтобы сделать код более читаемым и понятным.

static const CGFloat kAppConfiguredBrightness = (CGFloat)1.;

-(void)applicationWillResignActive
{
  UIScreen* screen = [UIScreen mainScreen];
  if (screen.brightness == kAppConfigredBrightness) {
    screen.brightness = oldScreenBrightness;
  }
}
person Jason Coco    schedule 29.09.2014

Согласно документам Apple Developer:

Изменения яркости, сделанные приложением, остаются в силе, только пока приложение активно. Система восстанавливает заданную пользователем настройку яркости в соответствующее время, когда ваше приложение не находится на переднем плане. Поэтому, если вы измените значение этого свойства, вам не нужно записывать предыдущее значение и восстанавливать его, когда ваше приложение переходит в фоновый режим.

person dliebeskind    schedule 17.09.2015