如何集中UIActivityIndicator?
已解决:请检查下面的解决scheme,我的问题。
嘿所以,
我无法将UIActivityIndicator置于视图的中心。 正如你在这里看到的那样,它在垂直方向上应该比它更远一点。 我有一个UIScrollView,后来添加了一个UIImage子视图。 在UIImage加载之前,我有这个UIActivityIndicator来显示图像正在加载。
- (void)viewDidLoad { [super viewDidLoad]; self.scrollView.backgroundColor = [UIColor blackColor]; UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; spinner.center = self.view.center; [spinner startAnimating]; [self.view addSubview:spinner];
关于如何获得中心CGPoint和设置UIActivityIndicator的任何想法? 我不知道为什么self.view.center
不起作用。
提前致谢。
编辑:我不得不考虑导航栏和标签栏的高度。 我必须添加的代码是:
float navigationBarHeight = [[self.navigationController navigationBar] frame].size.height; float tabBarHeight = [[[super tabBarController] tabBar] frame].size.height; spinner.center = CGPointMake(self.view.frame.size.width / 2.0, (self.view.frame.size.height - navigationBarHeight - tabBarHeight) / 2.0);
两个问题:
-
首先,self.view.center是当前视图在其父框架上的框架的中心。 如果你想要当前视图的中心,你需要
CGPointMake(self.view.frame.size.width / 2.0, self.view.frame.size.height / 2.0);
-
其次,您当前的视图不包含导航栏,因此您将其集中在导航栏下面的屏幕空间中。 这也会使它看起来更低。
迅速
由于导航栏和标签栏,我遇到了同样的问题。 为了解决这个问题,把下面的代码放在你的loadView()或者你调用活动指示器的地方开始animation:
let navigationBarHeight = self.navigationController?.navigationBar.frame.height let tabBarHeight = super.tabBarController!.tabBar.frame.height YourActivityIndicator.center = CGPointMake(self.view.frame.size.width / 2.0, (self.view.frame.size.height - navigationBarHeight! - tabBarHeight) / 2.0)
使用spinner.center = self.scrollView.center; 代替
尝试这个
spinner.center = CGPointMake(CGRectGetMidX(self.bounds),CGRectGetMidY(self.bounds));
我不确定究竟发生了什么,但是也许你的UIScrollView比屏幕更高? 你可以尝试打印你的UIView的大小,以确定是否在屏幕边界。 也许UIActivityIndicator是UIView的中心(不是屏幕的中心)。
在viewDidLayoutSubviews中设置中心。
- (void) viewDidLayoutSubviews { self.myActivityIndicator.center = self.view.center;
}