UIActivityIndi​​catorView显示在屏幕中央

Ind*_*ndy 16 iphone objective-c xcode4

有没有办法让UIActivityIndi​​catorView显示在屏幕中央以镜像NetworkActivityIndi​​cator?所以我想要与NetworkActivityIndi​​cator相同的过程,只需要一个更大的指示器,对用户来说更明显.

Mar*_*off 28

试试这个:

UIView *view = /* whatever your main view is */
UIActivityIndicatorView *spinner = [[UIActivityIndicatorVIew alloc] 
            initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
CGRect frame = spinner.frame;
frame.origin.x = view.frame.size.width / 2 - frame.size.width / 2;
frame.origin.y = view.frame.size.height / 2 - frame.size.height / 2;
spinner.frame = frame;
[view addSubview:spinner];
[spinner startAnimating];
[spinner release]; // Or, you could keep a handle to this for later to stop animating it
Run Code Online (Sandbox Code Playgroud)

这基本上将微调器置于其封闭视图中,无论可能是什么.

如果你没有保留旋转器的句柄,并且如果微调器是唯一的视图子视图(或者至少在一个众所周知的位置),你可以稍后通过浸入它来获得它的句柄[view subviews].

编辑:您也可以使用CGRectGetMidX()CGRectGetMidY()不是上面更复杂的方程式来查找xy...您的里程可能会有所不同.:-)

编辑(2016年2月25日)

这个答案最近收到了一些上涨票,所以我认为更新是有序的.实际上有一种更好的方法可以做到这一点.这个例子放在一个UIActivityIndicatorView中心UITableView.

self.spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
_spinner.translatesAutoresizingMaskIntoConstraints = NO;
_spinner.hidesWhenStopped = YES;
[self.tableView addSubview:self.spinner];

[self.tableView addConstraints:@[
                                 [NSLayoutConstraint constraintWithItem:_spinner
                                                              attribute:NSLayoutAttributeCenterX
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:self.tableView
                                                              attribute:NSLayoutAttributeCenterX
                                                             multiplier:1 constant:0],
                                 [NSLayoutConstraint constraintWithItem:_spinner
                                                              attribute:NSLayoutAttributeCenterY
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:self.tableView
                                                              attribute:NSLayoutAttributeCenterY
                                                             multiplier:1 constant:0]
                                 ]];
Run Code Online (Sandbox Code Playgroud)


csc*_*sch 22

这在UIViewController中适用于我:

- (void) viewDidLayoutSubviews {    
    self.activityIndicator.center = self.view.center; 
}
Run Code Online (Sandbox Code Playgroud)


Bki*_*est 9

indicatorView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin|UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
indicatorView.center = self.view.center;
Run Code Online (Sandbox Code Playgroud)