苹果官方demo中单例的写法:
+ (NetworkManager *)sharedInstance
{
static dispatch_once_t onceToken;
static NetworkManager * sSharedInstance;
dispatch_once(&onceToken, ^{
sSharedInstance = [[NetworkManager alloc] init];
});
return sSharedInstance;
}
----------------------------------------------------------------------------------------------------------------------------------------------------------
先下载MBProgressHUD,然后将.h和.m文件拖入工程。下载地址:MBProgressHUD
本人对其做了简单得封装,便于使用:
#pragma mark - MBProgressHud
- (void)MBProgressHud:(NSString*)str Mode:mode
{
UIView *hubView = [self app].window;
// The hud will dispable all input on the view (use the higest view possible in the view hierarchy)
HUD = [[MBProgressHUD alloc] initWithView:hubView];
[hubView addSubview:HUD];
// Regiser for HUD callbacks so we can remove it from the window at the right time
// Set determinate mode
HUD.mode = mode ;//MBProgressHUDModeText;
HUD.delegate = self;
HUD.labelText = str;
// Show the HUD while the provided method executes in a new thread
[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];
}
以下是源demo中得部分代码:(先在.h文件里定义 MBProgressHUD *HUD;)
注意要对 self.view初始化,否则会报
NSAssert(view, @"View must not be nil."); 错误
//方式1.直接在View上show
HUD = [[MBProgressHUD showHUDAddedTo:self.view animated:YES] retain];
HUD.delegate = self;
//常用的设置
//小矩形的背景色
HUD.color = [UIColor clearColor];//这儿表示无背景
//显示的文字
HUD.labelText = @"Test";
//细节文字
HUD.detailsLabelText = @"Test detail";
//是否有庶罩
HUD.dimBackground = YES;
[HUD hide:YES afterDelay:2];
//只显示文字
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeText;
hud.labelText = @"Some message...";
hud.margin = 10.f;
hud.yOffset = 150.f;
hud.removeFromSuperViewOnHide = YES;
[hud hide:YES afterDelay:3];
//方式2.initWithView
//use block
HUD = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:HUD];
HUD.labelText = @"Test";
[HUD showAnimated:YES whileExecutingBlock:^{
NSLog(@"%@",@"do somethings....");
[self doTask];
} completionBlock:^{
[HUD removeFromSuperview];
[HUD release];
}];
//圆形进度条
HUD = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:HUD];
HUD.mode = MBProgressHUDModeAnnularDeterminate;
HUD.delegate = self;
HUD.labelText = @"Loading";
[HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES];
//自定义view
HUD = [[MBProgressHUD alloc] initWithView:self.view];
HUD.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]] autorelease];
// Set custom view mode
HUD.mode = MBProgressHUDModeCustomView;
HUD.delegate = self;
HUD.labelText = @"Completed";
[HUD show:YES];
[HUD hide:YES afterDelay:3]; <span style="color:#ff0000;">
</span>
代理方法:
#pragma mark -
#pragma mark HUD的代理方法,关闭HUD时执行
-(void)hudWasHidden:(MBProgressHUD *)hud
{
[hud removeFromSuperview];
[hud release];
hud = nil;
}
二个task ,主要做延时消失用的
-(void) doTask{
//你要进行的一些逻辑操作
sleep(2);
}
-(void) myProgressTask{
float progress = 0.0f;
while (progress < 1.0f) {
progress += 0.01f;
HUD.progress = progress;
usleep(50000);
}
}