繁体   English   中英

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

[英]Center a UIActivityIndicatorView for a UITableViewController in the window, not in the table view

我在界面设计器中的表格视图中有一个UIActivityIndicatorView 我正在尝试使用以下方法将其居中在屏幕中间:

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

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

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

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

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

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

你有没有尝试过:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM