2

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

これは私のコードです:

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

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

助けてくれる人に感謝します...

4

3 に答える 3

1

これはおそらく、アプリが OS への制御を放棄し、OS がユーザーのグローバル設定に従って明るさを制御するためです。明るさの設定をグローバルに変更したい場合は、ユーザーのグローバルな iphone 設定にアクセスして変更する必要がありますが、それが可能かどうかはわかりません。

applicationDidEnterForeground で明るさを設定している場合: アプリは再び制御され、明るさなどを調整できます。アプリがその制御思考を失うとすぐに、OS が引き継ぎ、デバイスをユーザーのグローバル設定に準拠するように戻します。

それが役立つことを願っています。

于 2011-11-29T21:18:22.753 に答える
1

明るさを変更したい場合は、次のようにする必要があります。

func applicationWillResignActive(_ application: UIApplication) {
        DispatchQueue.main.async {
            UIScreen.main.brightness = 0.5
        }
    }
}
于 2021-07-15T16:56:00.170 に答える
0

これは現在のバージョンのバグであると確信しています (setBrightness 呼び出しは、applicationDidEnterBackground または applicationWillResignActive 内では効果がありません)。

私が現在行っていることは、あなたがたどり着いたものと似ています-アプリケーションがアクティブなときに明るさを1.0に設定し、必要に応じて他のすべてのグラフィックスの上にある黒いレイヤーの不透明度を変更して明るさを減らします. そうすれば、ユーザーがアプリを一時停止した場合、画面は少なくとも明るくなります (アプリの任意の明るさではありません)。

ユーザーが画面をロックすると、iPhone 設定の明るさに戻ります。

于 2011-12-24T01:41:50.020 に答える