Добавить индикатор загрузки в любом представлении
Я написал сообщение, чтобы показать собственное представление состояния для всего контроллера. Вы можете гибко отображать загружаемое изображение в формате gif, пустое состояние, отсутствие соединения или состояние ошибки. Проверьте скриншоты ниже.
Вы можете проверить этот пост здесь
Но в какой-то ситуации нам нужен простой индикатор загрузки только внутри небольшого представления? Как мы можем сделать это?
Я покажу вам, как это сделать сегодня.
Мы добавим индикатор загрузки в вид изображения обложки, цветные круги и круг размера во время загрузки.
Создать расширение UIView
extension UIView {
static let loadingViewTag = 1938123987
func showLoading(style: UIActivityIndicatorView.Style = .gray) {
// code here
}
func stopLoading() {
// code here
}
}
Добавить UIActivityIndicatorView
func showLoading(style: UIActivityIndicatorView.Style = .gray) {
var loading = viewWithTag(UIImageView.loadingViewTag) as? UIActivityIndicatorView
if loading == nil {
loading = UIActivityIndicatorView(style: style)
}
loading?.translatesAutoresizingMaskIntoConstraints = false
loading!.startAnimating()
loading!.hidesWhenStopped = true
loading?.tag = UIView.loadingViewTag
addSubview(loading!)
loading?.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
loading?.centerXAnchor.constraint(equalTo: centerXAnchor).isActive = true
}
Мы определяем статический тег со случайным числом 1938123987
. Вы можете ввести любой номер для вас.
Удалить UIActivityIndicatorView при остановке загрузки
func stopLoading() {
let loading = viewWithTag(UIView.loadingViewTag) as? UIActivityIndicatorView
loading?.stopAnimating()
loading?.removeFromSuperview()
}
imageView.showLoading()
colorView.stopLoading()
Достаточно легко?
Цвет
Но если я хочу изменить его цвет?
func showLoading(style: UIActivityIndicatorView.Style = .gray, color: UIColor? = nil) {
// ___
if loading == nil {
loading = UIActivityIndicatorView(style: style)
}
if let color = color {
loading?.color = color
}
// ___
}
imageView.showLoading(color: .blue)
Шкала
Ооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо из из из из из из изов из из из из из извввюсь , я хочу сделать его больше или меньше ?
func showLoading(style: UIActivityIndicatorView.Style = .gray, color: UIColor? = nil, scale: CGFloat = 1) {
// ___
if let color = color {
loading?.color = color
}
loading?.scale(value: scale)
// ___
}
colorView.showLoading(scale: 0.75)
Вы можете скачать полный код на моем гитхаб
Этот совет небольшой, но может помочь в некоторых ситуациях. Пожалуйста, поделитесь в комментариях, как вы его используете.
И поделитесь, как вы показываете загрузку в своих приложениях.
Продолжай учиться. Наслаждайтесь кодированием.