有导航栏时将 activity 指示器居中

Center the activity indicator when having navigation bar

我无法根据高度使 activity 指示器居中。在我添加导航控制器之前它很好,之后它水平居中但不是垂直居中。这是照片和代码。

这是在没有导航控制器时居中的代码。

_loadingView.center = self.view.center;
[self.view addSubview:_loadingView];

请帮忙。谢谢!!

你可以试试这个方法请检查下面link还有

- (void) viewDidLayoutSubviews {    

    _loadingView.center = self.view.center; 

}

它将帮助您解决问题

_loadingView = CGPointMake(self.view.frame.size.width / 2.0, (self.view.frame.size.height - navigationBarHeight - tabBarHeight) / 2.0)

[self.view addSubview:_loadingView];

在属性检查器的顶部栏下方检查您的导航控制器和视图控制器。

UIViewController 的视图在其父坐标 space 中报告其 center 坐标,这就是它垂直偏移导航栏高度的原因。

如果您想以与现在类似的方式放置指标,请自行计算中心坐标:

CGPoint center = CGPointMake(self.view.bounds.size.width / 2.0, self.view.bounds.size.height / 2.0) _loadingView.center = center; [self.view addSubview:_loadingView];

请务必在主视图的边界发生变化时进行更新,即在另一个答案中提到的 -viewDidLayoutSubviews 中。

然而,这一切都可以通过采用 Auto Layout 并设置两个中心约束来更新和简化,每个轴一个。您可以在 Interface Builder 模式或代码中执行此操作,请查看文档。

试试这个

_loadingView.center = self.navigationController.view.center;
[self.navigationController.view addSubview:_loadingView];

不一样的看法