README.mdown翻译
MBProgressHUD
MBProgressHUD是一个iOS插件类,当后台进程工作时可以在屏幕上展示一个包含相关信息(indicator or label..)的透明指示层。它可以用来替代未被官方文档说明的iOS私有方法UIKit UIProgressHUD,并且增加了一些额外的元素。
Requirements(要求)
MBProgressHUD支持各个iOS版本,并且兼容ARC以及非ARC项目。其依赖于以下Apple frameworks:
- Foundation.framework
- UIKit.framework
- CoreGraphics.framework
将你的开发环境更新到最新版本来使用MBProgressHUD,毕竟虽然在旧的Xcode版本或许可以工作,但不能确定一定毫无问题。
Adding MBProgressHUD to your project(添加MBProgressHUD到项目中,翻译略)
Usage(用法)
不要在主线程中处理耗时操作,以保证UI的流畅性(iOS中UI更新是在main thread中完成的,所以不要阻塞主线程)。推荐方法是在主线程中设置MBProgressHUD,开一个新线程来处理任务。
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
// Do something...
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
});
});
如果你想配置HUD,可以参照showHUDAddedTo:animated:.
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeAnnularDeterminate;
hud.labelText = @"Loading";
[self doSomethingInBackgroundWithProgressCallback:^(float progress) {
hud.progress = progress;
} completionCallback:^{
[hud hide:YES];
}];
UI更新必须在主线程中完成,一些MBProgressHUD的设置方法已经是线程安全的并能被后台进程调用。包括:setMode:, setCustomView:, setLabelText:, setLabelFont:, setDetailsLabelText:, setDetailsLabelFont: 以及 setProgress:.
如果你想在主线程中执行耗时操作,请延迟一段时间执行,以便UIKit在主线程阻塞之前有时间来更新UI(比如绘制HUD)。
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
// Do something...
[MBProgressHUD hideHUDForView:self.view animated:YES];
});
你必须意识到在上面的block完成前,任何HUD的更新都不会显示。
更多的示例参见demo,包括在异步操作中使用MBProgressHUD,例如NSURLConnection。MBProgressHUD.h中提供了大量的API说明文档。
************************************************
原创文章,转载请注明出处:http://blog.csdn.net/qq329735967
任何疑问欢迎Email至329735967@qq.com
************************************************