我有一个UITableviewcontroller和一个活动指示器添加到它。 每当我的表格滚动时,指示器也会向上移动并超出范围。相反,即使表格滚动,我也要显示指示器
我检查了这篇文章:UIActivityIndicator scrolls with tableView,该帖子说我需要使用UIViewcontroller而不是Tableviewcontroller。
由于我在应用程序中添加了许多tableviewcontrollers,因此无法将指标与tableview一起滚动。
我的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()
}
}
}
答案 0 :(得分:0)
如果不是扩展名,则可以执行此操作,例如代码位于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() ()
}
然后在每个tableController中从其扩展
class MyTable:MyTableConWithIndicator {}