我有一个表视图控制器,我在viewDidLoad()的屏幕中央显示一个UIActivityIndicatorView
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()
}
无论表格视图滚动多远,如何让活动指示符显示在中心?
答案 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)