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)
}
}