滚动 UITableView 后 UIActivityIndi​​catorView 不出现

UIActivityIndicatorView Not Appearing After Scrolling UITableView

我有一个 table 视图控制器,我在 viewDidLoad()

的屏幕中央显示了一个 UIActivityIndi​​catorView
let bounds = UIScreen.mainScreen().bounds;
        let width = bounds.size.width
        let height = bounds.size.height

        loadingIndicator = UIActivityIndicatorView(frame: CGRectMake(width / 2, height / 2, 75, 75))
        loadingIndicator.layer.cornerRadius = 10
        loadingIndicator.backgroundColor = kfbBlue
        loadingIndicator.center = CGPointMake(width / 2, height / 2 - 37)
        loadingIndicator.activityIndicatorViewStyle = .WhiteLarge
        loadingIndicator.hidesWhenStopped = true
        self.tableView.addSubview(loadingIndicator)
        loadingIndicator.startAnimating()

这很好用。我有一个重新加载 table 视图数据的方法。 reload() 有效,但如果我在滚动 table 视图后按下调用此方法的按钮,则 activity 指示器不会出现。它仅在 table 视图向上滚动到顶部时出现。

func reload() {
        loadingIndicator.startAnimating()
        self.beginParsing()
    }

无论 table 视图滚动了多远,如何让 activity 指示器出现在中心?

不要将 UIActivityIndicatorView 添加到 UITableView。将它添加到包含 UITableView 的父视图的中心。您正在将其添加到 UITableView 的内容视图中,该视图将滚动。如果您希望它在滚动 UITableView 时仍然存在,请将其添加到外面。很可能是这样的:

self.view.addSubview(loadingIndicator)

而不是你的台词

self.tableView.addSubview(loadingIndicator)

如果您使用的是 UITableViewController,最顶层的视图将是 TableView,因此您无法使用。您将不得不调整 activity 指示器的中心以考虑滚动位置:

loadingIndicator.center = CGPointMake(width / 2, self.tableView.contentOffset.y + height / 2 - 37)