6

問題は、私の読書アプリにダーク テーマ モードにするボタンがあることです。輝度が 10% 低下します。ユーザーが通常モードに戻ると、記憶された明るさに戻されます。ただし、その間、実際のシステムの明るさは、自動明るさ調整またはユーザーが [設定] に移動してそこで変更したために変更された可能性があります。

明るさプロパティの問題は、実際の画面の明るさのみを照会し、設定したものはユーザーが画面をロックするまで一時的にしか使用できないことです。ロックを解除すると、システムはシステムの明るさに戻ります。

システムが明るさを変更したときにiOSが通知を送信すると便利です。これに関するドキュメントは見つかりませんでした。

4

2 に答える 2

8

クラスUIScreenBrightnessDidChangeNotificationの一部を検索します。UIScreeniOS 5.0以上からご利用いただけます。

于 2013-02-06T00:33:00.723 に答える
4

デバイスが再びロック解除されたときに明るさをプログラム値に戻したい場合は、UIApplicationDidBecomeActiveNotification通知を確認し、セレクターで明るさを目的のレベルに戻します。

この明るさ全体についてさらに調査を行ったところ、次のことがわかりました。

UIScreenBrightnessDidChangeNotification、システムが明るさを変更した場合、またはユーザーがコントロール パネルまたは設定から​​明るさを変更した場合にのみ呼び出されます。プログラムで明るさを変更するときではありません。

ここの Apple Doc (以下を参照) から推測したことは、プログラムで設定した後は明るさが変わらないということです。

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

しかし、これは真実ではないことがわかりました(または誤解しています)。UIScreenBrightnessDidChangeNotificationプログラムで明るさを設定した後、明るさは変わります (そして呼び出されます)。ただし、システムが明るさを増減する必要があると判断した場合にのみ呼び出されます (環境の明るさの変化による) *。環境の明るさが同じままである場合、画面はプログラムで設定した明るさを保ちます。

これは何を意味するのでしょうか?さて、2つのこと:

  • プログラムで設定したレベルで明るさを維持したい場合は、環境が変化しても、UIScreenBrightnessDidChangeNotification呼び出されるたびに を観察し、明るさを目的のレベルにリセットする必要があります。
  • 「システム」の明るさに戻したい場合は、実際にはできません。環境が変化した場合にシステムの明るさがどうなるかがわからないためです(毎回リセットしているため)。これには 2 つのオプションがあります。
    1. プログラムで明るさを設定する前に明るさを覚えておいて、その値に戻してください。または
    2. 明るさを 0.5 に設定し、システムに任せます。

両方の状況での「危険」は、環境の明るさの変化が検出されるまで、設定した値のままになることです。

*2 つの特殊なケースがあります...明るさを 0.0 に設定し、システムが明るさを下げる必要があると判断した場合、明るさは既に 0.0 になっているため何も起こりません。次に、1.0 に設定すると、環境がどのように変化しても 1.0 のままになります。

于 2016-04-21T15:56:16.120 に答える