Как узнать уровень заряда батареи iPhone в SwiftUI с помощью Swift

Чтобы узнать уровень заряда батареи iPhone в SwiftUI, вы можете использовать класс UIDeviceиз UIKit, который предоставляет информацию об аппаратном и программном обеспечении устройства. Вот пример того, как вы можете получить уровень заряда батареи в SwiftUI с помощью UIDevice:

import UIKit
class BatteryStatusViewModel: ObservableObject {
    @Published var batteryLevel: Float = UIDevice.current.batteryLevel
    init() {
        UIDevice.current.isBatteryMonitoringEnabled = true
        NotificationCenter.default.addObserver(self, selector: #selector(batteryLevelDidChange), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
    }
    @objc private func batteryLevelDidChange() {
        batteryLevel = UIDevice.current.batteryLevel
    }
}
struct ContentView: View {
    @ObservedObject var batteryStatus = BatteryStatusViewModel()
    var body: some View {
        VStack {
            Text("Battery Level: \(batteryStatus.batteryLevel * 100, specifier: "%.0f")%")
                .font(.headline)
        }
    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

В этом примере мы создаем класс BatteryStatusViewModel, соответствующий протоколу ObservableObject. У него есть свойство batteryLevel, которое представляет текущий уровень заряда батареи. Включаем мониторинг батареи в инициализаторе и регистрируем уведомления об изменении уровня заряда батареи. При изменении уровня заряда батареи вызывается функция batteryLevelDidChange(), обновляющая свойство batteryLevel.

В ContentViewмы создаем экземпляр BatteryStatusViewModelв качестве наблюдаемого объекта. Мы отображаем уровень заряда батареи с помощью представления Text, и значение обновляется автоматически при каждом изменении batteryLevel.

Чтобы использовать этот ContentViewв своем приложении, вы можете добавить его в иерархию SwiftUI.