Представленный на 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)

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