MBProgressHUD 優雅地去提示,mbprogresshud提示
項目首頁: MBProgressHUD
執行個體下載: 點擊下載
快速上手:
當執行需要較長時間的任務時,使用MBProgressHUD最重要的一點是: 保證主線程是閒置,這樣可以使UI即時更新.因此: 建議在 主線程中使用 MBProgressHUD, 把其他你想要執行的任務放到其他的線程裡:
[MBProgressHUD showHUDAddedTo:self.view animated:YES];dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ // 執行某些任務... dispatch_async(dispatch_get_main_queue(), ^{ [MBProgressHUD hideHUDForView:self.view animated:YES]; });});
如果你想配置 HUD,你可以使用由 showHUDAddedTo:animated: 方法返回的 MBProgressHUD 的執行個體.
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];hud.mode = MBProgressHUDModeAnnularDeterminate;hud.labelText = @"Loading";// doSomethngInBackgroudWithProgressCallback: 代指某個和進度有關的 自訂方法.[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){ // 執行某個 耗時較長的操作. [MBProgressHUD hideHUDForView:self.view animated:YES];});