我已经在Swift的UITableViewController中创建了一个UIActivityIndicatorView,如下所示:
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上滚动时,UIActivityIndicatorView不会随之滚动。如何使UIActivityIndicatorView与UITableViewController一起滚动。
答案 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)
实际上,它可以毫无问题地滚动,因此我认为您的代码中没有错误。