10

[[UIScreen mainScreen]setBrightness: ](sdk 5.0 で) を使用して、アプリのシステム バックグラウンド ライトを変更します。

次の手順は私のアプリで機能します

  1. アプリをアクティブにし、システムの明るさをデフォルトとして取得し、名前を付けて保存しsysBrightます。

  2. 私のアプリで明るさを変更し、明るさを変更して、名前を付けて保存しappBrightます。

  3. ホームボタンまたはロックボタンを備えた ResignActive アプリで、明るさをsysBright(ステップ 1 の値、システムのデフォルトの明るさ) に設定します。

  4. 再びアクティブなアプリ。その後、上記の手順 1 から 3 を繰り返します。

手順 3 で問題が発生しました。ロック ボタンでアプリを非アクティブ化すると、機能が正常 applicationWillResignActiveに動作し、明るさの値を復元できます ( sysBright)。

しかし、ホームボタンを押しても動かなくなりました。明るさは、アプリで変更した値のままです。( appBright)

誰かそれについて何か考えがありますか?助けてくれてありがとう〜

コードは次のとおりです。

float appBright,sysBright;

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    sysBright = [[UIScreen mainScreen] brightness];
    [[NSUserDefaults standardUserDefaults] setFloat:sysBright forKey:@"sysBright"];

    [[UIScreen mainScreen] setBrightness:appBright];
}

//doesn't work when i ResignActive with the home button
- (void)applicationWillResignActive:(UIApplication *)application
{        
    [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"];
    [[UIScreen mainScreen] setBrightness:sysBright];        
}
4

4 に答える 4

5

iOS は、アプリ内の明るさの値を保持することを意図していません。アプリがアクティブ、終了、クラッシュなどを辞退した後、システム値を復元する必要があります。したがって、公式には applicationWillResignActive でそれを行う必要はありません。

しかし、うまくいきません。バグです。実際、別のアプリに切り替えると機能します(ホームボタンを2回押して別のアプリを選択します)

Apple にバグ レポートを提出するだけで時間を無駄にしないでください (私はよくやりました)。

画面のロックを解除すると、デフォルトのシステムの明るさが復元されます。電源ボタンを 2 回押してロックを解除するだけで、元の明るさに戻ります。

于 2012-04-22T01:23:40.030 に答える
1

これを試して...

- (void)applicationWillResignActive:(UIApplication *)application
{        
    CGFloat brightness = [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"];
    [[UIScreen mainScreen] setBrightness:brightness];        
}
于 2011-12-20T14:15:00.823 に答える