На одном из экранов моего приложения отображается штрих-код. Когда пользователь переходит к экрану (это вкладка в моем представлении вкладок), я устанавливаю максимальную яркость экрана. Когда пользователь уходит от экрана, я восстанавливаю яркость экрана до прежнего значения. Яркость не восстанавливается, когда пользователь закрывает приложение, перемещая его в фоновый режим или полностью закрывая. Как восстановить яркость экрана, когда пользователь закрывает приложение?
Код: Выделить всё
struct BarcodeView: View {
@Environment(\.scenePhase) var scenePhase
@State private var originalBrightness: CGFloat = 0.0
var body: some View {
Barcode()
.onAppear {
originalBrightness = UIScreen.main.brightness
UIScreen.main.brightness = 1.0
}
.onDisappear {
UIScreen.main.brightness = originalBrightness
}
.onChange(of: scenePhase) { _, newPhase in
if newPhase == .background {
UIScreen.main.brightness = originalBrightness
}
}
}
}
Модификаторы .onDisappear и .onChange срабатывают, когда приложение перемещается в фоновый режим или закрывается, но яркость не изменяется. Из Google я понимаю, что это задуманное поведение: приложения не должны иметь возможность изменять настройки яркости, когда они не активны, и это имеет смысл. Есть ли способ восстановить исходную яркость экрана или это невозможно?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... ng-ios-app