Добавить индикатор загрузки в любом представлении

Я написал сообщение, чтобы показать собственное представление состояния для всего контроллера. Вы можете гибко отображать загружаемое изображение в формате 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)

Вы можете скачать полный код на моем гитхаб

Этот совет небольшой, но может помочь в некоторых ситуациях. Пожалуйста, поделитесь в комментариях, как вы его используете.

И поделитесь, как вы показываете загрузку в своих приложениях.

Продолжай учиться. Наслаждайтесь кодированием.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *