0
1

More than 1 year has passed since last update.

【Swift】画面の明るさを強制的に変更する

Posted at

はじめに

PayPayをよく使うのですが、QRコードを表示する際に画面が強制的に明るくなるのでどうやるのか気になって調べてみました。

サンプルアプリ

動画だと画面の明るさが変わってるのがわからない。。。
Simulator Screen Recording - iPhone 14 - 2023-01-05 at 19.33.59.gif

注意
実機でのみ画面の明るさが変わっていることを確認できます。

実装

ContentView
import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationStack {
            NavigationLink {
                QRCodeView()
            } label: {
                Text("QRコードを表示する")
            }
        }
    }
}
QRCodeView
import SwiftUI

struct QRCodeView: View {
    private let brightness: CGFloat = UIScreen.main.brightness
    var body: some View {
        Image("qrcode")
            .resizable()
            .scaledToFit()
            .frame(maxWidth: .infinity)
            .onAppear {
                UIScreen.main.brightness = 1.0
            }
            .onDisappear {
                UIScreen.main.brightness = brightness
            }
    }
}

解説

以下のコードで画面の明るさをMAXにしています。

UIScreen.main.brightness = 1.0

以下のコードで遷移前の画面の明るさを保管しています。

private let brightness: CGFloat = UIScreen.main.brightness

以下のコードで画面の明るさを元に戻しています。

UIScreen.main.brightness = brightness

おわり

今度は強制的に音量を上げるについて調査してみたいです。
PayPayは音量が0でも「ペイペイッ!」だけ爆音でなるのでどうやってるのかかなり気になります。

参考記事

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1