はじめに
PayPayをよく使うのですが、QRコードを表示する際に画面が強制的に明るくなるのでどうやるのか気になって調べてみました。
サンプルアプリ
注意
実機でのみ画面の明るさが変わっていることを確認できます。
実装
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でも「ペイペイッ!」だけ爆音でなるのでどうやってるのかかなり気になります。
参考記事