Представленный на WWDC 2020 ProgressView предлагает вам круговое и линейное представление прогресса, которое можно легко создать с нуля.
Примечание. Это поддерживает только iOS 14 и выше и может использоваться только в Xcode 12+.
Предпосылки
Чтобы следовать этому руководству, вам потребуются базовые знания в:
- Быстрый
- По крайней мере, Xcode 12+
Неопределенный прогресс
Неопределенный относится к непрерывной анимации и по умолчанию имеет неопределенное поведение, которое бесконечно вращается:
ProgressView("Loading…")

Линейный прогресс
Чтобы создать линейное представление прогресса, вам нужно будет указать текущее значение и общее значение. В настоящее время устанавливается значение 50, что составляет половину от общего значения:
ProgressView("Downloading…", value: 50, total: 100)
.padding()

Вы даже можете увидеть это в действии, когда линейное представление прогресса продолжает прогрессировать. Сначала вы создадите состояние, в котором он будет отслеживать свой текущий прогресс:
@State private var currentProgress = 0.0
Затем вы создадите таймер со следующим кодом:
let timer = Timer.publish(every: 0.1, on: .main, in: .common).autoconnect()

Затем используйте текущий прогресс в режиме просмотра:
ProgressView("Downloading…", value: currentProgress, total: 100)
Добавьте действие в представление прогресса, при котором оно будет постоянно добавлять 1, пока не достигнет 100:
.onReceive(timer) { _ in
if currentProgress < 100 {
currentProgress += 1
}
}
Как результат:

Настройка
accentColor позволяет редактировать цвет полосы:
.accentColor(.green)
foregroundColor позволяет редактировать цвет заголовка:
.foregroundColor(.yellow)

Спасибо за прочтение!