iOS 的 HUD 簡(jiǎn)易封裝

簡(jiǎn)介

何為 HUD ?即透明指示層,如下圖中間部分:
HUD

HUD 在 iOS 中的界面展示中用的比較多。iOS 開(kāi)發(fā)中最常用的 HUD 要數(shù) MBProgressHUD 和 SVProgressHUD。很多開(kāi)發(fā)者把 HUD 封裝的比較復(fù)雜,本著簡(jiǎn)單、好用的原則,于是對(duì) MBProgressHUD 進(jìn)行了簡(jiǎn)易封裝。地址:https://github.com/Korune/KOProgressHUDManager,后面也會(huì)不定期更新。

思路

  1. 每個(gè) + show... 方法,最后調(diào)用的是 + showText: icon: mode: onView: duration: 方法。在上面說(shuō)的第二個(gè)方法中,進(jìn)行 MBProgressHUD 的初始化、相關(guān)設(shè)置。
  2. 封裝 MBProgressHUD,沒(méi)有通過(guò)添加 MBProgressHUD 分類(lèi)來(lái)實(shí)現(xiàn),而是通過(guò) KOProgressHUDManager 繼承 NSObject 來(lái)實(shí)現(xiàn),在 MBProgressHUD 的基礎(chǔ)上多封裝了一層 KOProgressHUDManager。 是避免以后改為使用其他第三方 HUD(比如 SVProgressHUD 等)時(shí),將項(xiàng)目中凡是用到 MBProgressHUD 類(lèi)的很多地方的代碼,都改為第三方 HUD 類(lèi)。

關(guān)鍵代碼

+ (void)showText:(NSString *)text icon:(UIImage *)icon mode:(MBProgressHUDMode)mode onView:(UIView *)view duration:(CGFloat)duration
{
    if (view == nil) {
        view = [UIApplication sharedApplication].delegate.window;
    }
    MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
    hud.detailsLabel.text = text;
    if (mode != MBProgressHUDModeText) {
        hud.mode = mode;
    } else {
        if (icon == nil) {
            hud.mode = MBProgressHUDModeText;
        } else {
            hud.mode = MBProgressHUDModeCustomView;
            hud.customView = [[UIImageView alloc] initWithImage:icon];
        }
    }
    hud.animationType = MBProgressHUDAnimationZoom;
    hud.removeFromSuperViewOnHide = YES;
    if (duration != kKOFastFutureDuration) {
        [hud hideAnimated:YES afterDelay:duration];
    }
    hud.margin = 10;
    [self setupHUDAppearance:hud];
}

+ (void)setupHUDAppearance:(MBProgressHUD *)hud
{
        hud.detailsLabel.font = [UIFont systemFontOfSize:15];
//        hud.detailsLabel.textColor = [UIColor whiteColor];
    //    hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor;
    //    hud.bezelView.backgroundColor = [UIColor brownColor];
}

KOProgressHUDManager 的使用

#pragma mark -

- (IBAction)showSuccess:(id)sender {
    [KOProgressHUDManager showSuccess:@"小伙子,你成功了!"];
}

- (IBAction)showError:(id)sender {
    [KOProgressHUDManager showError:@"小伙子,暫時(shí)失敗了,不要灰心!" duration:2];
}

- (IBAction)showLoading:(id)sender {
    [KOProgressHUDManager showLoading:@"小伙子,等等……" onView:self.view];
}

- (IBAction)hideHUD:(id)sender {
    [KOProgressHUDManager hideHUDForView:self.view];
}

截圖

運(yùn)行截圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱(chēng)項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明AI閱讀 16,215評(píng)論 3 119
  • 樣式 樣式是一組能應(yīng)用于視圖組件的屬性,用于復(fù)用相同的 UI 特性樣式的繼承可以在原有樣式的基礎(chǔ)上添加和覆蓋屬性繼...
    圈圈_勿忘初心閱讀 208評(píng)論 0 0
  • 一花一世界,一木一浮生,一草一天堂,一葉一如來(lái),一砂一極樂(lè),一方一凈土,一笑一塵緣,一念一清靜。
    乾坤小蟻閱讀 314評(píng)論 0 1
  • 我們公司今天強(qiáng)制休假,于是我們就能休四天假啦。我趕緊把去年底預(yù)填的三天假請(qǐng)了,于是我就可以一個(gè)星期不用上班了,哈哈...
    Rainie牙牙閱讀 214評(píng)論 2 0
  • 一 文章分析 1 由昨天的學(xué)習(xí)內(nèi)容引申出:只有持續(xù)提高成長(zhǎng)率的生意才是創(chuàng)業(yè)。 2 由三個(gè)方面分析“怎樣提高成長(zhǎng)率”...
    微語(yǔ)world閱讀 188評(píng)論 0 0

友情鏈接更多精彩內(nèi)容