Найти в Дзене
Alexei Strelnikov

Урок SwiftUI - Как использовать ProgressView в связке с URLSession

В этом уроке мы будем использовать Swift и SwiftUI для создания простого приложения, которое загружает изображение из Unsplash и показывает прогресс загрузки с помощью ProgressView. ProgressView - это вьюшка, которая показывает прогресс в выполнении задачи. Мы начнем с создания нового проекта Xcode, который использует SwiftUI для интерфейса. В файле ContentView.swift мы добавим несколько переменных для отслеживания сессии загрузки и прогресса. Как видно из приведенного выше кода, у нас есть свойство observation, которое имеет тип NSKeyValueObservation; именно оно позволит нам отслеживать прогресс выполнения задачи URLSessionDataTask и обновлять пользовательский интерфейс по мере необходимости. С помощью первого метода мы позаботимся о настройке задачи для загрузки изображения и обновим свойство image по завершению загрузки. Он также настроит наблюдение; как вы можете видеть, мы наблюдаем за ходом выполнения задачи по фракции (fractionCompleted) и обновляем свойство progress, которое мы

В этом уроке мы будем использовать Swift и SwiftUI для создания простого приложения, которое загружает изображение из Unsplash и показывает прогресс загрузки с помощью ProgressView.

ProgressView - это вьюшка, которая показывает прогресс в выполнении задачи. Мы начнем с создания нового проекта Xcode, который использует SwiftUI для интерфейса.

-2

В файле ContentView.swift мы добавим несколько переменных для отслеживания сессии загрузки и прогресса.

Как видно из приведенного выше кода, у нас есть свойство observation, которое имеет тип NSKeyValueObservation; именно оно позволит нам отслеживать прогресс выполнения задачи URLSessionDataTask и обновлять пользовательский интерфейс по мере необходимости.

С помощью первого метода мы позаботимся о настройке задачи для загрузки изображения и обновим свойство image по завершению загрузки. Он также настроит наблюдение; как вы можете видеть, мы наблюдаем за ходом выполнения задачи по фракции (fractionCompleted) и обновляем свойство progress, которое мы добавили ранее. Это свойство будет использовано позже для настройки ProgressView.

Метод reset очень прост, он возвращает наши свойства в состояние по умолчанию, как показано ниже:

Теперь мы можем обновить пользовательский интерфейс нашего приложения, поэтому мы добавим некоторый код в тело нашего представления. Во-первых, если изображение равно nil - что означает, что оно не было загружено - тогда мы покажем ProgressView со стилем LinearProgressViewStyle. В противном случае мы можем скрыть ProgressView и показать вместо него изображение. В нижней части нашего представления мы добавим кнопку, которая позволит загрузить новое изображение для отображения. В итоге тело нашего представления будет выглядеть следующим образом:

Наш код готов, теперь, если вы запустите свое приложение, вы должны увидеть прогресс загрузки изображения, а затем изображение после завершения загрузки. Вы также можете нажать кнопку обновления, чтобы загрузить новое изображение.

-3

Спасибо, что читаете! Надеюсь, сегодня вы узнали что-то новое. Готовое приложение вы можете найти на GitHub.

Эта заметка является переводом оригинальной статьи Ale Patron - SwiftUI Tutorial — How to use a ProgressView with URLSession

#swift #swiftui #ios #программирование для начинающих #progressview #urlsession