UIActivityIndicator не перемещается вверх при прокрутке в табличном представлении - PullRequest
0 голосов
/ 25 июня 2019

У меня есть UITableviewcontroller и индикатор активности, добавленный к нему.Когда прокручивается моя таблица, индикатор также движется вверх и выходит за пределы.Вместо этого я хочу отобразить индикатор, даже если таблица прокручивает

. Я проверил этот пост: UIActivityIndicator прокручивает с tableView , который говорит, что мне нужно использовать UIViewcontroller вместо Tableviewcontroller.

Так какВ приложение добавлено много контроллеров таблиц, не возможно ли прокрутить индикатор вместе с таблицей.

Мой UIActivityIndicator является вспомогательным классом для всего приложения, где я управляю отображением и удалением счетчика

extension UIViewController {
    class func displaySpinner(onView : UIView) -> UIView {
        let spinnerView = UIView.init(frame: onView.frame)
        spinnerView.backgroundColor = UIColor.init(red: 0.5, green: 0.5, blue: 0.5, alpha: 0.5)
        let ai = UIActivityIndicatorView.init(activityIndicatorStyle: .whiteLarge)
        ai.startAnimating()
        ai.center = spinnerView.center

        DispatchQueue.main.async {
            spinnerView.addSubview(ai)
            onView.addSubview(spinnerView)
        }

        return spinnerView
    }

    class func removeSpinner(spinner :UIView) {
        DispatchQueue.main.async {
            spinner.removeFromSuperview()
        }
    }
}

1 Ответ

0 голосов
/ 25 июня 2019

Вы можете сделать это, если это не расширение, скажем, код находится внутри tableController и

let indicator = UIActivityIndicator()

, тогда используйте

func scrollViewDidScroll(_ scrollView: UIScrollView) {
  // change frame of indicator by scrollview.contentOffset.y
}

Вы также можете расширить

class MyTableConWithIndicator:UITableViewController {

   let indicator = UIActivityIndicator()

   func scrollViewDidScroll(_ scrollView: UIScrollView) {
     // change y'frame of indicator by scrollview.contentOffset.y
   }
   func addIndicator() {}
   func removeIndicator() ()
}

Затем распространять из него в каждый стол контроллера

class MyTable:MyTableConWithIndicator {} 
...