在UITableView上滚动时,UIActivityIndi​​catorView消失

时间:2019-02-27 14:07:17

标签: ios swift

我已经在Swift的UITableViewController中创建了一个UIActivityIndi​​catorView,如下所示:

indicator = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) as UIActivityIndicatorView

indicator.center = self.view.center

indicator.hidesWhenStopped = true

indicator.style = UIActivityIndicatorView.Style.white

indicator.backgroundColor = UIColor(white: 0.0, alpha: 0.6)

indicator.layer.cornerRadius = 15

self.view.addSubview(indicator)

self.indicator.startAnimating()

这就像一个咒语,但是当它运行并在UITableView Controller上滚动时,UIActivityIndi​​catorView不会随之滚动。如何使UIActivityIndi​​catorView与UITableViewController一起滚动。

5 个答案:

答案 0 :(得分:2)

您可以将其添加到窗口中

let wind = (UIApplication.shared.delegate as! AppDelegate).window! 
wind.addSubview(indicator)

要删除

indicator.removeFromSuperview()

您也可以使用

override func scrollViewDidScroll(_ scrollView: UIScrollView) {
    indicator.frame.origin = CGPoint(x: indicator.frame.origin.x, y: UIScreen.main.bounds.height / 2 - 50 + scrollView.contentOffset.y)
}

答案 1 :(得分:0)

您的问题和标题似乎提出了不同的问题。在问题中,您询问如何使其随滚动移动,在标题中,您询问如何使其不滚动。

有几种方法可以做到这一点(滚动)。 一种方法是实现func scrollViewDidScroll(_ scrollView: UIScrollView) { }并在滚动视图(毕竟UITableView就是scrollView)滚动时移动活动指示器。另一种方法(我个人更喜欢)是将活动指示器放在表格视图单元格中。单元格始终以表格视图滚动。

答案 2 :(得分:0)

您需要做的是将indicator.center设置为其超级视图范围的中心。这些值在同一坐标系中(这里是cell.like的坐标系)。

indicator.setCenter(CGPointMake(CGRectGetMidX(cell.like.bounds),
                             CGRectGetMidY(cell.like.bounds)));

答案 3 :(得分:0)

我认为UITableView背后的指标。您是否尝试将指示器放在前面?

self.view.bringSubview(toFront: indicator)

答案 4 :(得分:0)

实际上,它可以毫无问题地滚动,因此我认为您的代码中没有错误。