デバイスが再びロック解除されたときに明るさをプログラム値に戻したい場合は、UIApplicationDidBecomeActiveNotification
通知を確認し、セレクターで明るさを目的のレベルに戻します。
この明るさ全体についてさらに調査を行ったところ、次のことがわかりました。
はUIScreenBrightnessDidChangeNotification
、システムが明るさを変更した場合、またはユーザーがコントロール パネルまたは設定から明るさを変更した場合にのみ呼び出されます。プログラムで明るさを変更するときではありません。
ここの Apple Doc (以下を参照) から推測したことは、プログラムで設定した後は明るさが変わらないということです。
アプリによって行われた明るさの変更は、アプリが閉じられているかどうかに関係なく、デバイスがロックされるまで有効です。システムの明るさ (ユーザーが [設定] または [コントロール センター] で設定できる) は、次にディスプレイの電源を入れたときに復元されます。
しかし、これは真実ではないことがわかりました(または誤解しています)。UIScreenBrightnessDidChangeNotification
プログラムで明るさを設定した後、明るさは変わります (そして呼び出されます)。ただし、システムが明るさを増減する必要があると判断した場合にのみ呼び出されます (環境の明るさの変化による) *。環境の明るさが同じままである場合、画面はプログラムで設定した明るさを保ちます。
これは何を意味するのでしょうか?さて、2つのこと:
- プログラムで設定したレベルで明るさを維持したい場合は、環境が変化しても、
UIScreenBrightnessDidChangeNotification
呼び出されるたびに を観察し、明るさを目的のレベルにリセットする必要があります。
- 「システム」の明るさに戻したい場合は、実際にはできません。環境が変化した場合にシステムの明るさがどうなるかがわからないためです(毎回リセットしているため)。これには 2 つのオプションがあります。
- プログラムで明るさを設定する前に明るさを覚えておいて、その値に戻してください。または
- 明るさを 0.5 に設定し、システムに任せます。
両方の状況での「危険」は、環境の明るさの変化が検出されるまで、設定した値のままになることです。
*2 つの特殊なケースがあります...明るさを 0.0 に設定し、システムが明るさを下げる必要があると判断した場合、明るさは既に 0.0 になっているため何も起こりません。次に、1.0 に設定すると、環境がどのように変化しても 1.0 のままになります。