SVProgressHUD的詳細(xì)使用

導(dǎo)庫(kù)

pod 'SVProgressHUD'

使用CocoaPads安裝第三方庫(kù)


  • SVProgressHUD 都有什么特點(diǎn)呢?

  1. 提示當(dāng)前的狀態(tài)嗅回,如:網(wǎng)絡(luò)傳輸涎显、提交中、操作成功或失敗等叹谁;

  2. 可設(shè)置提示的 pop layer 是否為 model迟杂,提示的時(shí)候是否允許用戶做其他操作;

  3. 可以設(shè)置背景色和自定義提示的內(nèi)容本慕;

  4. iOS 提示信息使用比較廣泛的有 SVProgressHUDMBProgressHUB 兩種,MBProgressHUD比較全面侧漓,但是SVProgressHUD比較輕量級(jí)锅尘,使用起來(lái)非常簡(jiǎn)潔,代碼量非常少。


使用:

因?yàn)槎际穷?lèi)方法藤违,引入頭文件#import "SVProgressHUD.h"浪腐,直接在控制器用類(lèi)名引用就好,很方便

1. 經(jīng)常使用的提示框方法:

 + (void)showSuccessWithStatus:(nullable NSString*)status;
效果圖
+ (void)showErrorWithStatus:(nullable NSString*)status;
效果圖
+ (void)showWithStatus:(nullable NSString*)status;
效果圖
//也是加載中的提示框顿乒,不過(guò)沒(méi)有文字
+ (void)show;
效果圖
+ (void)showInfoWithStatus:(nullable NSString*)status;
效果圖
+ (void)showProgress:(float)progress;

// 如果要在下方顯示文字议街,可以用這個(gè)方法
+ (void)showProgress:(float)progress status:(nullable NSString*)status;
顯示進(jìn)度的,圖為0.1的進(jìn)度璧榄,滿了為1
// 這個(gè)方法可以修改提示框上面的圖標(biāo)可以調(diào)用這個(gè)方法
+ (void)showImage:(UIImage*)image status:(NSString*)status

/* 這個(gè)方法還有一種用法就是提示純文字特漩,因?yàn)镾VProgressHUD不支持直接提示純文字,但可以通過(guò)調(diào)用這個(gè)方法來(lái)實(shí)現(xiàn)提示純文字骨杂,就是不傳image就行了涂身,
因?yàn)閰?shù)image沒(méi)有__nonNull修飾,所以不能直接傳nil搓蚪,會(huì)報(bào)警告蛤售,雖然不報(bào)錯(cuò)。我們可以傳一張空?qǐng)D片進(jìn)去妒潭,寫(xiě)法如下*/
[SVProgressHUD showImage:[UIImage imageNamed:@""] status:@"提示純文字"];
提示純文字

2.1 設(shè)置提示框背景和文字

     /*
        SVProgressHUDStyleLight,        // 白色半透明背景悴能,字體黑色
        SVProgressHUDStyleDark,         // 黑色背景,字體白色
        SVProgressHUDStyleCustom        // 白色背景雳灾,字體黑色
     */
    //設(shè)置HUD的Style
    [SVProgressHUD setDefaultStyle:SVProgressHUDStyleDark];

    //設(shè)置HUD和文本的顏色
    [SVProgressHUD setForegroundColor:[UIColor greenColor]];

    //設(shè)置HUD背景顏色
    [SVProgressHUD setBackgroundColor:[UIColor magentaColor]];

    //設(shè)置提示框的邊角彎曲半徑
    [SVProgressHUD setCornerRadius:5];

以前HUD背景圖層的樣式可在提示框方法里面把參數(shù)穿進(jìn)去漠酿,現(xiàn)在不行了


2.2 設(shè)置HUD背景圖層的樣式

/**
     *  SVProgressHUDMaskTypeNone:默認(rèn)圖層樣式,當(dāng)HUD顯示的時(shí)候佑女,允許用戶交互记靡。
     *
     *  SVProgressHUDMaskTypeClear:當(dāng)HUD顯示的時(shí)候,不允許用戶交互团驱。
     *
     *  SVProgressHUDMaskTypeBlack:當(dāng)HUD顯示的時(shí)候摸吠,不允許用戶交互,且顯示黑色背景圖層嚎花。
     *
     *  SVProgressHUDMaskTypeGradient:當(dāng)HUD顯示的時(shí)候寸痢,不允許用戶交互,且顯示漸變的背景圖層紊选。
     *
     *  SVProgressHUDMaskTypeCustom:當(dāng)HUD顯示的時(shí)候啼止,不允許用戶交互,且顯示背景圖層自定義的顏色兵罢。
     */
    [SVProgressHUD setDefaultMaskType:SVProgressHUDMaskTypeCustom];

所謂背景圖層樣式就是献烦,出現(xiàn)提示框,提示框外的背景的樣式卖词,比如背景紅色調(diào)用SVProgressHUDMaskTypeGradient這個(gè)樣式巩那,就是這樣的


漸變的

PS:顯示提示框的時(shí)候,一般不允許用戶交互,就是做其他操作即横,如點(diǎn)擊其他按鈕,因?yàn)槟J(rèn)就是允許交互噪生,所以這個(gè)一定要設(shè)置下

2.3 設(shè)置加載中提示框的加載動(dòng)畫(huà)


     /*
        SVProgressHUDAnimationTypeFlat,     // 默認(rèn)動(dòng)畫(huà)類(lèi)型,自定義平面動(dòng)畫(huà)
        SVProgressHUDAnimationTypeNative    // iOS native UIActivityIndicatorView
     */
    //動(dòng)畫(huà)效果
    [SVProgressHUD setDefaultAnimationType:SVProgressHUDAnimationTypeFlat];
SVProgressHUDAnimationTypeFlat
SVProgressHUDAnimationTypeNative

3. 隱藏提示框的方法

 //設(shè)置多少秒后隱藏
    [SVProgressHUD dismissWithDelay:60.0];
 //這個(gè)相當(dāng)于
 [self performSelector:@selector(dismiss) withObject:nil afterDelay:60];
- (void)dismiss{  
//這個(gè)是直接隱藏
    [SVProgressHUD dismiss];  
} 

4. 簡(jiǎn)單的封裝

你在展示提示框設(shè)置了樣式东囚,在其他地方使用其他提示框即使不設(shè)置也是之前那個(gè)樣式不是默認(rèn)的樣式跺嗽,如果是在ViewController里面直接用self調(diào)用就行了,當(dāng)然前提是導(dǎo)入文件页藻。主要有四個(gè)方法桨嫁,第一個(gè)是加載中,第二個(gè)是純文字惕橙,第三個(gè)是失敗瞧甩,第四個(gè)是成功提示,三四可以在block里面編寫(xiě)在提示后要進(jìn)行的操作弥鹦,如跳轉(zhuǎn)什么的肚逸,詳細(xì)看demo

  • UIViewController+LYToast.h
#import <UIKit/UIKit.h>
#import "SVProgressHUD.h"

NS_ASSUME_NONNULL_BEGIN

typedef void(^__nullable completeAction)(void);

@interface UIViewController (LYToast)

/*
 隱藏hud
 */
- (void)hideLoadingHUD;
/*
 加載中+文字提示(文字可為空)
 */
- (void)showLoadingHUDWithMessage:(nullable NSString *)message;
/*
 純文字提示
 */
- (void)showTextHUDWithMessage:(nonnull NSString *)message;
/*
 失敗提示
 */
- (void)showWarningHUDWithMessage:(nullable NSString *)message completion:(completeAction)completion;
/*
 完成提示
 */
- (void)showCompletionHUDWithMessage:(nullable NSString *)message completion:(completeAction)completion;


@end

NS_ASSUME_NONNULL_END
  • UIViewController+LYToast.m
#import "UIViewController+LYToast.h"

@implementation UIViewController (LYToast)

- (void)hideLoadingHUD
{
    [SVProgressHUD dismiss];
}

- (void)showLoadingHUDWithMessage:(NSString *)message
{
    // 如果當(dāng)前視圖還有其他提示框,就dismiss
    [self hideLoadingHUD];
    
    [SVProgressHUD setDefaultStyle:SVProgressHUDStyleDark];
    [SVProgressHUD setCornerRadius:5];
    [SVProgressHUD setDefaultAnimationType:SVProgressHUDAnimationTypeNative];
    
    // 加載中的提示框一般不要不自動(dòng)dismiss彬坏,比如在網(wǎng)絡(luò)請(qǐng)求朦促,要在網(wǎng)絡(luò)請(qǐng)求成功后調(diào)用 hideLoadingHUD 方法即可
    if (message) {
        [SVProgressHUD showWithStatus:message];
    }else{
        [SVProgressHUD show];
    }
}

- (void)showTextHUDWithMessage:(NSString *)message
{
    [self hideLoadingHUD];
    
    [SVProgressHUD setDefaultStyle:SVProgressHUDStyleDark];
    [SVProgressHUD setCornerRadius:5];
    [SVProgressHUD setDefaultAnimationType:SVProgressHUDAnimationTypeNative];
    
    [SVProgressHUD showImage:[UIImage imageNamed:@""] status:message];
    
    [SVProgressHUD dismissWithDelay:2];
    
}


- (void)showCompletionHUDWithMessage:(NSString *)message completion:(completeAction)completion
{
    [self hideLoadingHUD];
    
    [SVProgressHUD setDefaultStyle:SVProgressHUDStyleDark];
    [SVProgressHUD setCornerRadius:5];
    [SVProgressHUD setDefaultAnimationType:SVProgressHUDAnimationTypeNative];
    
    [SVProgressHUD showSuccessWithStatus:message];
    
    [SVProgressHUD dismissWithDelay:2];
    if (completion) {
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC);
        dispatch_after(popTime, dispatch_get_main_queue(), ^{
            completion();
        });
    }
    
}

- (void)showWarningHUDWithMessage:(NSString *)message completion:(completeAction)completion
{
    [self hideLoadingHUD];
    
    [SVProgressHUD setDefaultStyle:SVProgressHUDStyleDark];
    [SVProgressHUD setCornerRadius:5];
    [SVProgressHUD setDefaultAnimationType:SVProgressHUDAnimationTypeNative];
    
    [SVProgressHUD showErrorWithStatus:message];
    
    [SVProgressHUD dismissWithDelay:2];
    if (completion) {
        dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC);
        dispatch_after(popTime, dispatch_get_main_queue(), ^{
            completion();
        });
    }
}

Demo地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市栓始,隨后出現(xiàn)的幾起案子务冕,更是在濱河造成了極大的恐慌,老刑警劉巖幻赚,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禀忆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡落恼,警方通過(guò)查閱死者的電腦和手機(jī)箩退,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)佳谦,“玉大人戴涝,你說(shuō)我怎么就攤上這事∽昝铮” “怎么了啥刻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)咪笑。 經(jīng)常有香客問(wèn)我可帽,道長(zhǎng),這世上最難降的妖魔是什么窗怒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任映跟,我火速辦了婚禮钝满,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘申窘。我一直安慰自己,他們只是感情好孔轴,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布剃法。 她就那樣靜靜地躺著,像睡著了一般路鹰。 火紅的嫁衣襯著肌膚如雪贷洲。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天晋柱,我揣著相機(jī)與錄音优构,去河邊找鬼。 笑死雁竞,一個(gè)胖子當(dāng)著我的面吹牛钦椭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播碑诉,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼彪腔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了进栽?” 一聲冷哼從身側(cè)響起德挣,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎快毛,沒(méi)想到半個(gè)月后格嗅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唠帝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年屯掖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没隘。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡懂扼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出右蒲,到底是詐尸還是另有隱情阀湿,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布瑰妄,位于F島的核電站陷嘴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏间坐。R本人自食惡果不足惜灾挨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一邑退、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劳澄,春花似錦地技、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至砂缩,卻和暖如春作谚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背庵芭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工妹懒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人双吆。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓眨唬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親伊诵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子单绑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344