Чтобы узнать уровень заряда батареи 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.