我在界面设计器中的表视图中有一个UIActivityIndicatorView
。我试图使用以下内容将其置于屏幕中间:
override func viewWillLayoutSubviews() {
self.activityView.center = self.view.center
}
但它似乎总是坐在页面上太低',它似乎位于UITableView的中间,而不是像我想要的那样在窗口中间(即它被它推倒了)导航栏等)
答案 0 :(得分:1)
解决方案是将activityView框架设置为视图的边界。仅设置中心不起作用,因为tableView框架的y值为负。
override func viewWillLayoutSubviews() {
self.activityView.translatesAutoresizingMaskIntoConstraints = true
self.activityView.frame = self.view.bounds
}
答案 1 :(得分:1)
使用自动布局,您可以使用layoutMarginsGuide
在UITableView
和UICollectionView
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)
它有点长,但可以很好地处理通话状态栏。