滚动UITableView后不显示UIActivityIndi​​catorView

时间:2016-03-07 19:57:26

标签: ios uitableview uiactivityindicatorview

我有一个表视图控制器,我在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()

这很好用。我有一个重装方法来重新加载表视图数据。 reload()有效,但如果在滚动表视图后按下调用此方法的按钮,则不会显示活动指示符。仅当表格视图滚动到顶部时才会出现。

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

无论表格视图滚动多远,如何让活动指示符显示在中心?

1 个答案:

答案 0 :(得分:1)

请勿将UIActivityIndicatorView添加到UITableView。将其添加到包含UITableView的父视图的中心。您将其添加到UITableView的内容视图中,该视图将滚动。如果您希望它在UITableView滚动后仍然存在,请将其添加到外部。最有可能是这样的:

self.view.addSubview(loadingIndicator)

而不是你的行

self.tableView.addSubview(loadingIndicator)

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

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