Swift 将活动指示器放置在uitable视图上

Swift 将活动指示器放置在uitable视图上,swift,Swift,我在情节提要的UITableView中放置了一个活动指示器。 我怎么能把它放在屏幕中间和表格视图前面?< /P> 我试过: self.activityIndicator.center = self.tableView.center 但现在,活动指示器位于视图的中上部 如果此活动指示器用于将信息加载到UITableView中,则应创建一个与UITableView大小相同的单独加载UITableView,并将活动指示器放在该视图的中心,而不是UITableView本身 然后将加载UIView添加到

我在情节提要的
UITableView
中放置了一个活动指示器。 我怎么能把它放在屏幕中间和表格视图前面?< /P> 我试过:

self.activityIndicator.center = self.tableView.center

但现在,活动指示器位于视图的中上部

如果此活动指示器用于将信息加载到
UITableView
中,则应创建一个与
UITableView
大小相同的单独加载
UITableView
,并将活动指示器放在该视图的中心,而不是
UITableView
本身


然后将加载
UIView
添加到主视图(表视图上方),并根据加载状态将其设置为隐藏或可见。

以下是步骤:按照chrisukhram说明进行操作

  • 将视图拖动到“表视图”步骤的顶部
  • 拖动活动 视图上的指示器
  • 将活动指示器与 集装箱的水平和垂直中心

  • 制造出口 视图和活动指示器的连接

  • 启动 活动指示器
  • 停止并隐藏:
    activityIndicatorLarge.hidesWhenStopped=true
    activityView.hidden=true

  • 要在
    UITableView
    中加载数据时显示活动指示器,可以创建UIView并将其添加到主视图(在
    UITableView
    的中心)。如果要按如下所示显示:

    您可以通过以下功能来完成此操作:f简介
    setLoadingScreen
    removeloadingsScreen
    (如果您想查看示例项目,可以访问):


    我认为您在故事板中直接使用了UITableView。这就是为什么不能将uiview拖到主视图(tableview)的顶部。删除UItableview控制器并将UIViewController拖动到情节提要中。然后将一个tableview拖到其中。然后将另一个视图拖到活动指示器的tableview上。不要忘记在UIViewController中处理UItableviewdelegate和datasourse方法。

    如果使用复杂视图:

     func setupSpinner(){
        spinner = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 40, height:40))
        spinner.color = UIColor(Colors.Accent)
        self.spinner.center = CGPoint(x:UIScreen.main.bounds.size.width / 2, y:UIScreen.main.bounds.size.height / 2)
        self.view.addSubview(spinner)
        spinner.hidesWhenStopped = true
    }
    

    最简单的方法是在tableView背景视图中添加UIActivityIndicatorView

        let spinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
    
        spinner.startAnimating()
        tableView.backgroundView = spinner
    

    默认情况下,它将居中。

    在tableViewController的
    viewDidLayoutSubviews
    方法中,尝试以下操作:

    override func viewDidLayoutSubviews() {
        let screenSize = UIScreen.main.bounds
        activityIndicator.frame = CGRect(x: screenSize.width / 2, y: screenSize.height / 2, width: 5, height: 5)
        activityIndicator.color = .white
        activityIndicator.hidesWhenStopped = true
    
        if let baseView = view.superview {
            baseView.addSubview(activityIndicator)
        }
    }
    

    activityIndicator
    是我的
    TableViewController
    类的存储属性。

    如何将uiView放置在tableView上?添加UITableView后,可以将加载的uiView添加到ViewController主视图(self.view)。基本上,添加视图的顺序是它们在显示时的堆叠顺序。因此我必须以这种方式更改情节提要:是的,如果在情节提要中执行此操作,则更容易,只需在文档大纲视图(情节提要左侧)的表视图“下方”添加UIView@chrisukhram,这在Xcode 8中仍然有效吗?当我试图在文档大纲中的tableView下拖动uiview时,Xcode会在
    第一响应程序
    退出
    之间而不是在控制器内?+1,但在我的情况下,removeLoadingScreen()的行为不正常,即使在表格单元格出现后,标签和指示器仍然可见。几秒钟后,标签和指示器消失了。我用removeLoadingScreen()中的self.loadingView.removeFromSuperview()修复了它。您在TableViewController中测试过吗?这不适用于我。请使用let spinner=UIActivityIndicatorView(样式:。大)
    override func viewDidLayoutSubviews() {
        let screenSize = UIScreen.main.bounds
        activityIndicator.frame = CGRect(x: screenSize.width / 2, y: screenSize.height / 2, width: 5, height: 5)
        activityIndicator.color = .white
        activityIndicator.hidesWhenStopped = true
    
        if let baseView = view.superview {
            baseView.addSubview(activityIndicator)
        }
    }