4

applicationDidEnterBackground または applicationWillResignActive で画面の明るさを設定できないのはなぜですか?

これは私のコードです:

-(void)applicationDidEnterBackground:(UIApplication *)application { 
    [[UIScreen mainScreen] setBrightness:1.0];
}

わからない…!? applicationDidEnterForegroundホームボタンを使用してアプリを閉じたときだけではなく、などで機能します。

この問題に対する他の解決策はありますか?

4

2 に答える 2

12

2016年8月の更新:

アプリによって行われた明るさの変更は、アプリが閉じられているかどうかに関係なく、デバイスがロックされるまで有効です。システムの明るさ(ユーザーは[設定]または[コントロールセンター]で設定できます)は、次にディスプレイをオンにしたときに復元されます。

https://developer.apple.com/reference/uikit/uiscreen/1617830-明るさ

元の投稿2012年7月:

終了する直前に明るさを設定することはできません。これはどこにも文書化されていませんが、開発フォーラムの次の投稿が役に立ちます。

https://devforums.apple.com/thread/139813?start=0&tstart=0

起こるかというと、アプリがバックグラウンドで実行されると、システム全体の明るさが復元されます。次にバックライトをオフにしてからオンにするまで、これが実際には発生しないという既知のバグがあります。

明るさを0に設定してホームキーを押すと、簡単に再現できます。ホーム画面はまだ非常に暗いです。デバイスをロックしてからロックを解除すると、システムの明るさが復元されます。

これについてバグを報告してください!同じ投稿で、Appleの従業員は、バグレポートを繰り返すことが役立つと投稿しました。

于 2012-07-27T11:08:27.727 に答える
0

applicationDidEnterBackground で画面の明るさを設定しようとしたことはありません。

すべての上に黒の背景色を持つ UIView を使用することで、アプリケーションの明るさを変更できると思います。次に、この UIView のアルファを設定します。その後、結果は実際の画面の明るさとまったく同じに見えます。

この方法は iOS5 でのみ使用できるため、この代替方法を使用します。

[[UIScreen mainScreen] setBrightness:1.0];

iOS3,4にも対応したいです。

于 2012-04-27T10:00:48.893 に答える