在窗口中为UITableViewController居中UIActivityIndi​​catorView,而不是在表视图中

时间:2017-01-27 02:54:36

标签: ios uiactivityindicatorview

我在界面设计器中的表视图中有一个UIActivityIndicatorView。我试图使用以下内容将其置于屏幕中间:

   override func viewWillLayoutSubviews() {
        self.activityView.center = self.view.center
    }

但它似乎总是坐在页面上太低',它似乎位于UITableView的中间,而不是像我想要的那样在窗口中间(即它被它推倒了)导航栏等)

3 个答案:

答案 0 :(得分:1)

解决方案是将activityView框架设置为视图的边界。仅设置中心不起作用,因为tableView框架的y值为负。

override func viewWillLayoutSubviews() {
    self.activityView.translatesAutoresizingMaskIntoConstraints = true
    self.activityView.frame = self.view.bounds
}

答案 1 :(得分:1)

使用自动布局,您可以使用layoutMarginsGuideUITableViewUICollectionView s中获得正确的中心X,Y锚点:

activityView.translatesAutoresizingMaskIntoConstraints = false
activityView.centerXAnchor.constraint(equalTo: view.layoutMarginsGuide.centerXAnchor).isActive = true
activityView.centerYAnchor.constraint(equalTo: view.layoutMarginsGuide.centerYAnchor).isActive = true

答案 2 :(得分:0)

你试过了吗?

  self.activityView.center = self.view.window?.center

如果没有,那么这个怎么样:

let screenSize = UIScreen.main.bounds
self.activityView.center = CGPoint(x: screenSize.width / 2, y: screenSize.height / 2)

它有点长,但可以很好地处理通话状态栏。