您好,登錄后才能下訂單哦!
在開源中國iOS客戶端中也用到了MBProgressHUD這個特效,主要作用為應用顯示一個過渡的作用,常用于打開一個聯網頁面加載過程,防止出現假死現象,如果網速慢則告訴用戶已經在很努力很努力的加載中。
GitHub上下載地址:https://github.com/jdg/MBProgressHUD
源碼中也自帶了一個Demo,顯示13中動畫效果,可以根據需要選取其中特效加以使用,使用方法基本一樣;使用的時候只加把MBProgressHUD.h和MBProgressHUD.m拖入工程中,在使用的文件中加上#import"MBProgressHUD.h"
在開源中國iOS客戶端中只用到一種特效,當我們選取一條資訊查看詳細信息時:
我們在跳轉到實現的代碼部分,在NewsDetail.m的clickFavorite和viewDidLoad方法中
- (void)clickFavorite:(id)sender { UIBarButtonItem * btn = (UIBarButtonItem *)sender; BOOL isFav = [btn.title isEqualToString:@"收藏此文"]; MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view]; [Tool showHUD:isFav ? @"正在添加收藏":@"正在刪除收藏" andView:self.view andHUD:hud]; [[AFOSCClient sharedClient]getPath:isFav ? api_favorite_add : api_favorite_delete parameters:[NSDictionary dictionaryWithObjectsAndKeys: [NSString stringWithFormat:@"%d", [Config Instance].getUID],@"uid", [NSString stringWithFormat:@"%d", newsID],@"objid", @"4",@"type", nil] success:^(AFHTTPRequestOperation *operation, id responseObject) { [hud hide:YES]; [Tool getOSCNotice2:operation.responseString]; ApiError *error = [Tool getApiError2:operation.responseString]; if (error == nil) { [Tool ToastNotification:operation.responseString andView:self.view andLoading:NO andIsBottom:NO]; return ; } switch (error.errorCode) { case 1: { btnFavorite.title = isFav ? @"取消收藏" : @"收藏此文"; self.singleNews.favorite = !self.singleNews.favorite; } break; case 0: case -2: case -1: { [Tool ToastNotification:[NSString stringWithFormat:@"錯誤 %@",error.errorMessage] andView:self.view andLoading:NO andIsBottom:NO]; } break; } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { [hud hide:YES]; [Tool ToastNotification:@"添加收藏失敗" andView:self.view andLoading:NO andIsBottom:NO]; }]; }
- (void)viewDidLoad { [super viewDidLoad]; self.tabBarItem.title = @"資訊詳情"; self.tabBarItem.image = [UIImage imageNamed:@"detail"]; //WebView的背景顏色去除 [Tool clearWebViewBackground:self.webView]; self.singleNews = [[SingleNews alloc] init]; self.navigationController.title = @"資訊詳情"; self.webView.delegate = self; [self.webView loadHTMLString:@"" baseURL:nil]; if ([Config Instance].isNetworkRunning) { MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view]; [Tool showHUD:@"正在加載" andView:self.view andHUD:hud]; NSString *url = [NSString stringWithFormat:@"%@?id=%d",api_news_detail, newsID]; [[AFOSCClient sharedClient] getPath:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { [Tool getOSCNotice2:operation.responseString]; [hud hide:YES]; self.singleNews = [Tool readStrNewsDetail:operation.responseString]; if (self.singleNews == nil) { [Tool ToastNotification:@"加載失敗" andView:self.view andLoading:NO andIsBottom:NO]; return; } [self loadData:self.singleNews]; //如果有網絡 則緩存它 if ([Config Instance].isNetworkRunning) { [Tool saveCache:1 andID:self.singleNews._id andString:operation.responseString]; } } failure:^(AFHTTPRequestOperation *operation, NSError *error) { [hud hide:YES]; if ([Config Instance].isNetworkRunning) { [Tool ToastNotification:@"錯誤 網絡無連接" andView:self.view andLoading:NO andIsBottom:NO]; } }]; } else { NSString *value = [Tool getCache:1 andID:newsID]; if (value) { self.singleNews = [Tool readStrNewsDetail:value]; [self loadData:self.singleNews]; } else { [Tool ToastNotification:@"錯誤 網絡無連接" andView:self.view andLoading:NO andIsBottom:NO]; } } }
首先是判斷網絡是否連通狀態,如果是
定義在當前的view中定義一個MBProgressHUD對象,進行初始化
[ToolshowHUD:@"正在加載" andView:self.viewandHUD:hud];是在Tool類里面進行的一次封裝,設置MBProgressHUD的顯示信息
+ (void)showHUD:(NSString *)text andView:(UIView *)view andHUD:(MBProgressHUD *)hud { [view addSubview:hud]; hud.labelText = text;//顯示提示 hud.dimBackground = YES;//使背景成黑灰色,讓MBProgressHUD成高亮顯示 hud.square = YES;//設置顯示框的高度和寬度一樣 [hud show:YES]; }然后在用到AFNetWork類庫的getPath:parameters:success:failure:方法,嵌套在block塊中判斷請求的url是否成功,在執行[Tool getOSCNotice2:operation.responseString];這個方法也是封裝在Tool類中,封裝的是TBXML解析器,如果解析成功立即設置MBProgressHUD隱藏屬性[hud hide:YES];如果請求的url不成功直接設置MBProgressHUD隱藏屬性[hud hide:YES],再用GCDiscreetNotificationView進行通知“錯誤 網絡無連接”;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。