MBProgressHUD的使用場景:MBProgressHUD主要用于執行任務時的過程指示,給用戶信息以明確當前正在執行的操作,解答用戶的疑惑,緩解用戶的等待焦急癥。例如登陸過程的等待,加載數據的等待等。
MBProgressHUD的使用主要分為兩種情況。其一:通過類方法直接實例化對象,這種方式不需要用戶手動開始,也不需要用戶手動添加MBProgressHUD視圖到其父視圖上。這種放肆簡單,但靈活度低。其二:與第一種方法相對應,手動開始顯示,同時可以指定期間執行的任務,以及顯示完成執行的任務。
1. 類方法實例化
// 顯示HUD
MBProgressHUD * hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
// 在這里執行相應的任務
// 執行任務完成,隱藏
BOOL isHide = [MBProgressHUD hideHUDForView:self.view animated:YES];
這種方式的實例化,會自動的將HUD添加到傳入的視圖中,不用用戶手動
2. 對象方法實例化
// 實例化HUD
MBProgressHUD * hud = [[MBProgressHUD alloc] initWithView:self.view];
// 添加到實例化中傳入的視圖,這里注意兩個view一定要一致
[self.view addSubview:hud];
// 這里主要有兩種顯示方法:
// 第一種:通過Block
[hud showAnimated:YES whileExecutingBlock:^{
// 顯示期間執行的Block
} onQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) completionBlock:^{
// HUD隱藏后執行的Block
}];
// 第二種:通過selector的方式
[hud showWhileExecuting:@selector(update) onTarget:self withObject:nil animated:YES];
// 但隱藏需要手動隱藏:任然調用下面的方法
BOOL isHide = [MBProgressHUD hideHUDForView:self.view animated:YES];
當添加多個HUD的時候,MBProgressHUD提供隱藏的快捷方法:
[MBProgressHUD hideAllHUDsForView:self.view animated:YES];
當然MBProgressHUD也提供了根據視圖獲取對應的HUD的方法:
NSArray * huds = [MBProgressHUD HUDForView:self.view];
3. 屬性詳解
MBProgressHUD提供了十分多的屬性,這是我們給視圖天使HUD更加的靈活多變,下面對其中常用的屬性進行解釋:
// 設置顯示的HUD模式
hud.mode = MBProgressHUDModeDeterminate;
/*
MBProgressHUDModeIndeterminate, // default模式,顯示活動指示器
MBProgressHUDModeDeterminate, // 扇形圖顯示進度
MBProgressHUDModeDeterminateHorizontalBar, // 按鈕形狀式顯示進度
MBProgressHUDModeAnnularDeterminate, // 圓環式顯示進度
MBProgressHUDModeCustomView, // 自定義顯示視圖
MBProgressHUDModeText // 只顯示主副標題
*/
// 注意以上顯示模式除了最后一種,其余的都可以顯示主副標題(條件是設置了labelText、detailsLabelText屬性)
// 設置HUD背景顏色
hud.color = [UIColor whiteColor];
// 主標題
hud.labelText = @"牛逼的夢想";
// 副標題
hud.detailsLabelText = @"我是很牛逼的夢想";
// 顯示、隱藏動畫樣式
hud.animationType = MBProgressHUDAnimationZoomIn;
/*
MBProgressHUDAnimationFade, // 淡入、淡出模式
MBProgressHUDAnimationZoomOut // 淡入、淡出 + 縮放
MBProgressHUDAnimationZoomIn // 淡入、淡出 + 縮放
*/
// 當model屬性為顯示進度相關的值時,此時設置progress的值,可以實現進度的顯示
hud.progress = 1.0;
// HUD的相對于父視圖 x 的偏移,默認居中
hud.xOffset = 50;
hud.yOffset = 50;
// 是否顯示蒙板
hud.dimBackground = YES;
// HUD內部視圖相對于HUD的邊距
hud.margin = 50;
// HUD圓角半徑
hud.cornerRadius = 20;
// 最小的顯示時間
hud.minShowTime = 3;
// HUD的最小尺寸
hud.minSize = CGSizeMake(300, 300);
// 代理中只有一個方法,即獲得HUD隱藏后的時刻
hud.delegate = self;
// 另外還有一些與labelText、detailsLabelText相關的屬性,這里不介紹了。另外還有一個customView屬性,將會在下面進行講解
4. 自定義顯示視圖
MBProgressHUD不光提供了普通HUD的簡單實用,還提供了自定義顯示內容的簡單接口,下面的例子只是簡單的實現系統提供的活動指示器樣式
// 實例化HUD
MBProgressHUD * hud = [[MBProgressHUD alloc] initWithView:self.view];
// 添加到實例化中傳入的視圖,這里注意兩個view一定要一致
[self.view addSubview:hud];
// 自定義視圖
UIActivityIndicatorView * indictorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[indictorView startAnimating];
hud.customView = indictorView;
// 顯示HUD
[hud showWhileExecuting:@selector(update) onTarget:self withObject:nil animated:YES];
// 隱藏HUD
[MBProgressHUD hideHUDForView:self.view animated:YES];