我的应用程序中有多个视图控制器。
从服务器下载数据时,我可以启动UIActivityIndicatorView
。
但问题是三个不同的视图控制器我需要创建三个不同的UIActivityIndicatorView
。
我想在某个地方初始化UIActivityIndicatorView
一次,这样我就可以显示或隐藏它。无需像视图控制器那样创建或初始化UIActivityIndicatorView
。
我该怎么做?任何帮助。
答案 0 :(得分:1)
在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];
答案 1 :(得分:0)
您可以使用自定义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];
答案 2 :(得分:0)
请参阅此https://github.com/jdg/MBProgressHUD链接。您将获得所有视图的自定义活动指示器。
答案 3 :(得分:0)
谢谢大家的答案。下面的代码适用于我。
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];
}
}