我的应用程序中有多个视图控制器。
从服务器下载数据时,我可以启动一个UIActivityIndicatorView
.
但问题是对于三个不同的视图控制器,我需要创建三个不同的UIActivityIndicatorView
.
我只想UIActivityIndicatorView
在某个地方初始化一次,以便显示或隐藏它。无需创建或初始化UIActivityIndicatorView
与视图控制器一样多的视图控制器。
我怎样才能做到这一点?任何帮助。
我的应用程序中有多个视图控制器。
从服务器下载数据时,我可以启动一个UIActivityIndicatorView
.
但问题是对于三个不同的视图控制器,我需要创建三个不同的UIActivityIndicatorView
.
我只想UIActivityIndicatorView
在某个地方初始化一次,以便显示或隐藏它。无需创建或初始化UIActivityIndicatorView
与视图控制器一样多的视图控制器。
我怎样才能做到这一点?任何帮助。
像这样在 appdelgate 中的窗口上添加加载指示器
首先初始化你的加载视图
-(void)InitializeLoadingIndictor
{
loadingView = [[UIImageView alloc]initWithFrame:CGRectMake(300, 400, 150, 150)];
[loadingView setBackgroundColor:[UIColor blackColor]];
[loadingView setAlpha:0.6];
[loadingView setHidden:YES];
[loadingView.layer setCornerRadius:10];
[_window addSubview:loadingView];
loadingIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
[loadingIndicator setFrame:CGRectMake(50, 50, 50, 50)];
[loadingView addSubview:loadingIndicator];
}
然后创建两个方法两个隐藏和显示它
+ (void)showLoading
{
[loadingView setHidden:NO];
[loadingIndicator startAnimating];
}
把它藏起来
+ (void)hideLoading
{
[loadingView setHidden:YES];
}
然后在您的视图控制器中,将其称为
[AppDelegate showLoading];
完成后隐藏它
[AppDelegate hideLoading];
谢谢你们的答案。下面的代码对我有用。
AppDelegate.m
-(void)StartLoading
{
loader = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
loader.frame = CGRectMake(50, 14, 20, 20);
[loader startAnimating];
[self.window addSubview:loader];
[self.window bringSubviewToFront:loader];
}
-(void)EndLoading
{
for(UIView *subview in [self.window subviews])
{
if(subview==loader)
[subview removeFromSuperview];
}
}
您可以使用自定义 UIAlertView 来显示您的指标。我制作了两个自定义文件,您可以使用它们来显示指标,而无需一次又一次地对其进行初始化。
文件是://头文件..
#import <UIKit/UIKit.h>
@interface ProgressIndicator : UIAlertView
{
UIActivityIndicatorView *activityIndicator;
}
@end
//实现文件
#import "ProgressIndicator.h"
@implementation ProgressIndicator
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
activityIndicator=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
// Initialization code
}
return self;
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
[self addSubview:activityIndicator];
[activityIndicator startAnimating];
// Drawing code
}
@end
//在你的控制器中使用这个文件..
#import "ProgressIndicator.h"
ProgressIndicator *progressIndicator=[[ProgressIndicator alloc] initWithTitle:@"Loading" message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
[progressIndicator show];
请参考此https://github.com/jdg/MBProgressHUD链接。您将获得所有视图的自定义活动指示器。