0

これは、この iO7 以降のアプリで私が実際に行っていることです。

ユーザーがアプリを開いたときに、画面の明るさの値を取得し、明るさを完全に上げたいと考えています。ユーザーがアプリを離れたときに、明るさを以前の値に戻したいです。

これまでのところ、私はこれを使用しています:

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

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

これは正常に機能しますが、ユーザーがアプリの使用中にコントロール センターを介して明るさを調整した場合、アプリを終了すると元の明るさに戻ります。

だから私は、Key Value Observe [UIScreen mainScreen].brightnessを使用して、ユーザーが変更したかどうかを確認して、古い値に戻すことを省略できるかどうか疑問に思っていました....

4

2 に答える 2

2

Apple Developer docs によると:

アプリによる明るさの変更は、アプリがアクティブな間のみ有効です。システムは、アプリがフォアグラウンドにない適切なタイミングで、ユーザーが指定した明るさの設定を復元します。したがって、このプロパティの値を変更した場合、以前の値を記録して、アプリがバックグラウンドに移行したときにそれを復元する必要はありません。

于 2015-09-17T03:04:18.733 に答える
1

私はあなたがそれを過度に複雑にしていると思います。外出先で、現在の明るさレベルを確認してください。の場合1.0は、開始時に取得したものに戻します。それ以外の場合1.0は、ユーザーが別のものに変更したことをかなり確信で​​きるので、何もしないでください。

また、コードを読みやすくし、意図を明確にするために、画面の明るさに対してある種の定数を作成することもおそらく最善です。

static const CGFloat kAppConfiguredBrightness = (CGFloat)1.;

-(void)applicationWillResignActive
{
  UIScreen* screen = [UIScreen mainScreen];
  if (screen.brightness == kAppConfigredBrightness) {
    screen.brightness = oldScreenBrightness;
  }
}
于 2014-09-29T23:15:44.137 に答える