在开源中国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];         }     } }  

分析viewDidLoad方法,

首先是判断网络是否连通状态,如果是

定义在当前的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进行通知“错误 网络无连接”;

本文转自新风作浪 51CTO博客,原文链接:http://blog.51cto.com/duxinfeng/1208683,如需转载请自行联系原作者

开源中国iOS客户端学习——(七)MBProgressHUD特效相关推荐

  1. 开源中国iOS客户端学习

    开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客    http://blog.csdn.net/column/details/xfzl-kykhd.html ...

  2. 开源中国iOS客户端学习——(十二)用户登陆

    ---------------------------------------------------------------------------------------------------- ...

  3. 开源中国iOS客户端学习——(八)网络通信AFNetworking类库

    AFNetworking是一个轻量级的iOS网络通信类库,继ASI类库不在更新之后开发者们有一套不错选择: AFNetworking类库×××和使用教程: https://github.com/AFN ...

  4. 开源中国iOS客户端学习——(一)Prefix.pch文件

    2019独角兽企业重金招聘Python工程师标准>>> 当我们新建一个工程的时候,在Supporting FIles文件下会看到一个以  -Prefix.pch结尾文件的文件,pch ...

  5. 开源中国iOS客户端学习——(五)网络通信ASI类库(1)

    如今的应用大部分基予网络,在开源中国iOS客户端源码中关于网络通信方面用了三个类库,ASI和AFNetworking,还有一个苹果官方给出的Reachability用于检测当前网络状况,本文介绍当前用 ...

  6. 开源中国iOS客户端学习——序

    ------------------------------------------------------------------------------------ 2015.8.19 更新 考虑 ...

  7. 开源中国IOS客户端

    自己想看看别人开发的项目,吸收下经验,然后找到开源中国,有些网上的大牛自己也开发出了开源中国的客户端 在网上看到很多网友说,下载下来安装不了之类的东西,在我这里我带个路,希望对那些朋友有些帮助. ht ...

  8. 开源中国android客户端学习 第一天

    源码地址:http://git.oschina.net/oschina/android-app 第一天,看了很久oschina的源码,然后提取了他的头部和底部(本人新手,见谅哈) 效果图

  9. 开源中国Android客户端v2.6.5代码开源啦!

    我们发布了开源中国Android客户端v2.6.5,这个版本中包含了大量的细节改进,感兴趣的朋友们现在就可以checkout代码出来钻研了交流了. (新版界面实现等,请参考 net.oschina.a ...

最新文章

  1. 我的业务要不要用人工智能?引入AI前你需要评估的(二)
  2. 数据挖掘:一个end2end完整实例
  3. php 替换字符串 图片,PHP替换字符串实现图片自适应屏幕实例代码
  4. MySQL查询连接数
  5. PPT 2010实现使用自定义主题付下载
  6. Hive高级用法汇总
  7. [css] 使用css写一个垂直翻转图片的效果
  8. java实现对大文件切割下载_Java实现大文件的切割与合并操作示例
  9. linux下文件删除不了
  10. 控件绑定有序对象集合winform
  11. python基础字典(七)
  12. Python最大公约数gcd、最小公倍数lcm
  13. 两化融合:唐山探路重工业城市智慧转型
  14. 力扣每日一刷-144,二叉树前序遍历-递归解法
  15. # 学号20155308 2006-2007-2 《Java程序设计》第4周学习总结
  16. 人体姿态估计综述 2020最全
  17. 深度学习导论 - 读李宏毅《1天搞懂深度学习》
  18. 决策支持系统复习资料
  19. PTA题目:7-9 抢红包 (25分)
  20. 基于注意力机制的超分辨率重建汇总

热门文章

  1. [svc]centos7的服务治理-systemd
  2. POJ 2457 BFS
  3. centos下不重装php——给PHP添加新扩展库
  4. 判断一个网站用什么服务器
  5. Android自定义样式
  6. [转]如何使用BackTrack破解WIFI无线网络的WEP密钥
  7. 现在物价虽然高得离谱,但是内存条都白菜价格了,需要调整程序架构的思维“与时俱进” --- 改进系列之一...
  8. CSS样式(四)- CSS定位
  9. Ubuntu学习日记--Lesson2:创建、重命名、删除文件及文件夹,强制清空回收站方法
  10. 数据结构笔记(八)-- 链式栈