UIActivityIndi​​catorView不居中

时间:2015-04-28 12:45:00

标签: ios objective-c uiactivityindicatorview

我有一个带有UIActivityIndi​​catorView的TableViewController作为子视图,而内容加载并且它的工作方式应该如此。唯一的问题是我无法将活动指示器置于屏幕中心。

CGFloat width = CGRectGetWidth(self.view.bounds);
CGFloat height = CGRectGetHeight(self.view.bounds);

loadingIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(width / 2, height / 2, 125, 125)];
    loadingIndicator.center = CGPointMake(width / 2, height / 2);
    loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
    loadingIndicator.hidesWhenStopped = YES;
    [self.tableView addSubview:loadingIndicator];
    [loadingIndicator startAnimating];

7 个答案:

答案 0 :(得分:8)

另外值得注意的是,大指标似乎向左和向上移动了3个像素。 (swift,iOS 9.2.1)

enter image description here

答案 1 :(得分:2)

也许是因为你的视图在xib中的大小不合适(例如,xib中的iPhone 5,你在iPhone 6上运行它)。 所以,你的身高和宽度计算是错误的。

相反,请尝试使用

CGFloat width = CGRectGetWidth(UIScreen.mainScreen.bounds);
CGFloat height = CGRectGetHeight(UIScreen.mainScreen.bounds);

希望有所帮助:)

答案 2 :(得分:1)

试用代码:

CGFloat width = CGRectGetWidth(self.tableView.bounds);
CGFloat height = CGRectGetHeight(self.tableView.bounds);
UIActivityIndicatorView *loadingIndicator;
loadingIndicator = [[UIActivityIndicatorView alloc]init];
loadingIndicator.center = CGPointMake(width / 2, height / 2);
loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;

loadingIndicator.hidesWhenStopped = YES;
[self.tableView addSubview:loadingIndicator];
[loadingIndicator startAnimating];

答案 3 :(得分:0)

尝试

[loadingIndicator setCenter:[self.tableView center]];

答案 4 :(得分:0)

尝试将此行loadingIndicator.center = CGPointMake(width / 2, height / 2);更改为loadingIndicator.center = self.view.center;,并将子视图loadingIndicator添加到self.view

答案 5 :(得分:0)

您的代码非常完美,但我认为您在self.view的基础上设置了框架,并在tableview上添加了该指标。

所以在self.view上添加该指标。

答案 6 :(得分:0)

如果你的问题是水平位置不正确,那么视图的界限可能仍然是故事板的自由宽度。

尝试将您的代码放入 viewDidLayoutSubviews 。要避免重复添加到视图,请将activityObject设置为此类的属性。

当你想要在屏幕中居中时,Tejvansh Singh Chhabra的答案很好。通常情况下,如果您想根据视图的边框或边界定位视图,请将代码置于 viewDidLayoutSubviews 阶段之后,或将约束添加到视图中。