You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
По нажатию на `Load more` начинается загрузка. Текст показывает текущий прогресс, а кнопка `Reset`станет доступной для нажатия и сброса. Когда загрузка закончится, текст на экране сообщит об этом. Кнопка `Load more` станет неактивной.
83
+
По нажатию на `Load more` начинается загрузка. Текст показывает прогресс, а кнопка `Reset` для сброса. Текст на экране изменится, когда загрузка закончится. Кнопка `Load more` станет неактивной.
Событие вызывается несколько раз при помощи таймера. Код таймера:
116
+
Событие вызывается несколько раз при помощи таймера. Код:
113
117
114
118
```swift
115
119
let timer = Timer.publish(every: 0.05, on: .main, in: .common).autoconnect()
116
120
```
117
121
118
-
Таймер срабатывает каждые 0.05 секунд (50 миллисекунд). Таймер должен работать в главном потоке и общем цикле (common run loop). Run loop позволяет обрабатывать код, когда пользователь делает что-либо (нажимает кнопку). Таймер начинает отсчитывать время моментально.
122
+
Таймер срабатывает каждые 0.05 секунд (50 миллисекунд), он должен работать в главном потоке и общем цикле `common run loop`. Run loop позволяет обрабатывать код, когда пользователь взаимодейтсвует и интерфейсом. Таймер начнет отсчитывать время моментально.
119
123
120
124
Когда `progress` достигнет `downloadTotal` значения, таймер остановится.
121
125
При достижении 50% загрузки, индикатор меняет цвет на зеленый.
122
126
123
-
`ProgressView` выглядит как полоса загрузки, которая заполняется слева направо.
124
-
Так показываем пользователю, что прогресс загрузки зависит от размера файла.
127
+
`ProgressView` это полоса загрузки, заполняется слева направо.
125
128
126
-
Описание метода `publish` доступно в [документации Apple](https://developer.apple.com/documentation/foundation/timer/3329589-publish). Больше инициализаторов можно найти в документации Xcode или [на сайте](https://developer.apple.com/documentation/swiftui/progressview).
129
+
Описание метода `publish` доступно в [документации Apple](https://developer.apple.com/documentation/foundation/timer/3329589-publish). Больше инициализаторов в документации Xcode или [на сайте](https://developer.apple.com/documentation/swiftui/progressview).
Собственный дизайн для `ProgressView` создаётся с помощью протокола `ProgressViewStyle`, нужно наследоваться от него. Объявим структуру `RoundedProgressViewStyle`, которая содержит метод `makeBody()` и принимает параметр конфигурации для стиля:
135
+
Чтобы создать кастомный дизайн для `ProgressView`, нужно наследоваться от протокола `ProgressViewStyle`. Объявим структуру `RoundedProgressViewStyle` c методом `makeBody()` и принимающим параметр конфигурации для стиля:
Возвращаемся к `TimerProgressView.swift` и передадим `RoundedProgressViewStyle(color: .cyan)` в модификатор `.progressViewStyle()`. Теперь код выглядит так:
153
+
Передадим `RoundedProgressViewStyle(color: .cyan)` в модификатор `.progressViewStyle()`:
0 commit comments