Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIActivityIndicator视图显示在屏幕中央_Iphone_Objective C_Xcode4 - Fatal编程技术网

Iphone UIActivityIndicator视图显示在屏幕中央

Iphone UIActivityIndicator视图显示在屏幕中央,iphone,objective-c,xcode4,Iphone,Objective C,Xcode4,是否有办法将UIActivityIndicator视图显示在屏幕中央,以镜像网络活动指示器?因此,我希望使用与NetworkActivityIndicator相同的流程,只是使用一个更大的指示器,用户将更容易注意到。尝试以下方法: UIView *view = /* whatever your main view is */ UIActivityIndicatorView *spinner = [[UIActivityIndicatorVIew alloc] initW

是否有办法将UIActivityIndicator视图显示在屏幕中央,以镜像网络活动指示器?因此,我希望使用与NetworkActivityIndicator相同的流程,只是使用一个更大的指示器,用户将更容易注意到。

尝试以下方法:

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
这基本上使微调器在其封闭视图中居中,不管是什么

如果您没有保留微调器的控制柄,并且如果微调器是视图的唯一子视图(或者至少是在一个众所周知的位置),那么您可以稍后通过使用它的
[视图子视图]
来获得控制柄

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

编辑(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]
                                 ]];

这在UIViewController中适用:

override func viewDidLayoutSubviews() {
    activityIndicator.center = view.center
}
-(无效)设置中心:(UIView*)视图{
UIActivityIndicatorView*actView=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[视图添加子视图:actView];
[actView startAnimating];
CGSize boundsSize=view.bounds.size;
CGRect frameToCenter=actView.frame;
//水平居中
if(frameToCenter.size.width

}这对我很有效。请注意,我使用的是边界而不是框架。框架并不总是根据方向正确地显示矩形(此方法位于视图控制器内部)


只有这一款适合我,简单快捷:

UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 

spinner.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2);

[self.view addSubview:spinner]; 
[spinner startAnimating];
在swift 2.0 xcode 7中:

 override func viewDidLayoutSubviews() {
    self.Loader.center = self.view.center
 }
迅速:

var activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)

override func viewDidLoad() {
    activityIndicator.hidesWhenStopped = true;
    activityIndicator.activityIndicatorViewStyle  = UIActivityIndicatorViewStyle.Gray;
    activityIndicator.center = view.center;
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}
有关更多信息,请参阅以下教程:


我想你是说它只适合iPhone。如果它可以像
activityInd.center=CGPointMake(self.view.bounds.size.width/2.0、self.view.bounds.size.height/2.0)那样编写就更好了
但我还是会给+1,因为对于这个特殊目的,center比设置框架要好。是的,我只是在谈论iPhone。只需在这个函数中传递视图,它会处理所有事情:)我可以知道如何添加文本以及UIActivityIndicatorVie您可以创建一个
UILabel
,将它添加到您的视图中,然后使用约束,将其置于微调器下方的中心。您可以使用视觉约束格式,如
“V:[spinner]-[label]”
NSLayoutFormatAlignAllCenterX
- (void) viewDidLayoutSubviews
{
    if (self.spinner)
    {
        CGRect screenRect = self.view.bounds;

        self.spinner.frame = CGRectMake(roundf((screenRect.size.width - 50) * 0.5f),
                                        roundf((screenRect.size.height - 50) * 0.5f),
                                        50,
                                        50);
    }
}
UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 

spinner.center = CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2);

[self.view addSubview:spinner]; 
[spinner startAnimating];
 override func viewDidLayoutSubviews() {
    self.Loader.center = self.view.center
 }
var activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)

override func viewDidLoad() {
    activityIndicator.hidesWhenStopped = true;
    activityIndicator.activityIndicatorViewStyle  = UIActivityIndicatorViewStyle.Gray;
    activityIndicator.center = view.center;
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}