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