开源类库之三(MPProgressHUD)

MPProgressHUD是一个非常好用的进度指示器类库,其提供了苹果官方sdk没有提供的progress indicator接口,且提供多种样式,使用方法简便。

首先将类库文件添加到项目中。

使用实例代码如下:

[cpp] view
plain
copy

  1. #import <UIKit/UIKit.h>
  2. #import "MBProgressHUD.h"

[cpp] view
plain
copy

  1. #import <libkern/OSAtomic.h>
  2. @interface SampleViewController : UITableViewController <MBProgressHUDDelegate>
  3. @property (nonatomic, retain) NSCondition* condition;
  4. @property (nonatomic, retain) MBProgressHUD* hud;
  5. @end
  6. static volatile NSInteger WAITING_RESPONSE_FOR_SERVERRESPONSE = 0;
  7. - (void) popOutMBProgressHUD;
  8. - (void) selectorForMPProgressHUD;
  9. - (void) notifyMPProgressHUDToDisappear;
  10. @implementation SampleViewController
  11. @synthesize hud = _hud;
  12. @synthesize condition = _condition;
  13. - (id) initWithCoder:(NSCoder *)aDecoder
  14. {
  15. self = [super initWithCoder: aDecoder];
  16. if (self != nil) {
  17. _hud = nil;
  18. _condition = [[NSCondition alloc] init];
  19. }
  20. return self;
  21. }
  22. - (void) dealloc
  23. {
  24. [_hud release];
  25. [_condition release];
  26. }
  27. - (void) popOutMBProgressHUD
  28. {
  29. MBProgressHUD* tempHud = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
  30. self.hud = tempHud;
  31. [self.navigationController.view addSubview: tempHud];
  32. self.hud.dimBackground = YES;
  33. self.hud.delegate = self;
  34. self.hud.labelText = @"正在处理";
  35. [self.hud showWhileExecuting:@selector(selectorForMPProgressHUD) onTarget:self withObject: nil animated:YES];
  36. [tempHud release];
  37. }
  38. - (void) selectorForMPProgressHUD
  39. {
  40. OSAtomicCompareAndSwapInt(0,
  41. 1,
  42. &WAITING_RESPONSE_FOR_SERVERRESPONSE);
  43. [self performSelectorInBackground: @selector(tempSelector) withObject: nil];
  44. [self.condition lock];
  45. while (OSAtomicCompareAndSwapInt(1,
  46. 1,
  47. &WAITING_RESPONSE_FOR_SERVERRESPONSE)) {
  48. NSDate* timeOutDate = [NSDate dateWithTimeIntervalSinceNow: 5.0f];
  49. [self.condition waitUntilDate: timeOutDate];
  50. }
  51. [self.condition unlock];
  52. }
  53. - (void) notifyMPProgressHUDToDisappear
  54. {
  55. //通知进度显示hud消失
  56. [self.condition lock];
  57. OSAtomicCompareAndSwapInt(1,
  58. 0,
  59. &WAITING_RESPONSE_FOR_SERVERRESPONSE);
  60. [self.condition signal];
  61. [self.condition unlock];
  62. }

[cpp] view
plain
copy

  1. - (void)hudWasHidden:(MBProgressHUD *)hud
  2. {
  3. // Remove HUD from screen when the HUD was hidded
  4. [self.hud removeFromSuperview];
  5. self.hud = nil;
  6. }
  7. - (void) tempSelector
  8. {
  9. sleep(3.0f);//模拟真实的耗时操作
  10. [self notifyMPProgressHUDToDisappear];
  11. }
  12. @end
时间: 2024-10-08 04:52:05

开源类库之三(MPProgressHUD)的相关文章

使用CocoaPods管理第三方开源类库

iOS开发中经常会用到许多第三方类库,比如AFNetworking.FMDB.JSONKit等等,使用CocoaPods这个工具就能很方便得对工程中用到的类库进行管理,包括自动下载配置以及更新. 首先需要下载安装CocoaPods,系统要求有ruby环境,至少OS X 10.9以后是自带ruby环境的(Python也自带了),使用"ruby -v"命令可以查看当前ruby版本. 配置过程如下: 1.ruby环境 不放心的话可以先确认下ruby环境,据说由于GFW的影响,大都把Ruby镜

Json序列化之.NET开源类库Newtonsoft.Json的研究

一.Json简介                                                                                                                    JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的文本格式,可以很容易在各种网络.平台和程序之间传输.JSON的语法很简单,

IOS 一些开源类库

因 为iOS SDK相对比较底层,所以开发者就得受累多做一些体力活.不过幸运的是,有很多第三方的类库可以用来简化很多不必要的工作.笔者整理了一下在本人学习过程 中用到的一些比较有用Objective-C开源类库,既是做一个总结,同时也希望通过这些分享,能提高各位的开发效率. KissXml——xml解析库 相关教程: github:https://github.com/Threew/KissXML http://sencho.blog.163.com/blog/static/8305622820

iCarousel——在iOS和Mac OS应用中实现3D CoverFlow旋转木马效果的开源类库

前言 iCarousel一个简单.可高度定制的3D CoverFlow开源类库,旨在简化在 iPhone, iPad和Mac OS中生成各种类型的cover flow(视图切换)效果(分页.滚动视图).用户手指划动图片,图片将不断以3D的形式切换. Github托管地址:https://github.com/nicklockwood/iCarousel 说明 iOS开发中如果想要你实现滑动效果,可以使用icarousel这个第三方库,还比较好用,感觉用起来有点像tableView.在网上下载这个

Atitit java onvif 开源类库 getProfiles&#160;getStreamUri

Atitit java onvif 开源类库 getProfiles getStreamUri 1. ONVIF Java Library by Milgo1 1.1. https://github.com/milg0/onvif-java-lib4 1.2. getProfiles  respones file4 1.3. getStreamUri:rtsp://192.168.31.144:10554/tcp/av0_04 1.4. Code---5 1. ONVIF Java Librar

IM开发之Socket通信开源类库CocoaAsyncSocket

CocoaAsyncSocket:https://github.com/robbiehanson/CocoaAsyncSocket CocoaAsyncSocket是用的最广泛的socket开发库,在iOS开发中使用socket,一般都是用第三方库CocoaAsyncSocket 打开连接看了下作者的开源类库,满满的崇拜感!!! 相关教程:https://github.com/robbiehanson/CocoaAsyncSocket/wiki/Intro_GCDAsyncSocket http

Android之开源类库Pinyin4j的使用----搜索联系人

Pinyin4j只能算是Java开源类库,但是在Android的应用开发中也经常被用到.大家都用过手机的通讯录,通讯录的搜索联系人的功能,用pinyin4j就可以实现.下面我给大家带来这个例子,使用pinyin4j实现搜索联系人功能. 首先先对pinyin4j做一个简单的介绍: pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换,拼音的输出格式也可以定制,并且支持汉字的多音字.pinyin4j的官方网是:http://pinyin4j.sourceforge.net/ piny

转:常用的几个提高iOS开发效率的开源类库及工具

常用的几个提高iOS开发效率的开源类库及工具 iOS开发者 : 开发几个常用的开源类库及下载地址: 算上这个连接:http://wenku.baidu.com/view/bbeb0091dd88d0d233d46a00.html 1.json json编码解码2.GTMBase64 base64编码解码3.TouchXML xml解析4.SFHFKeychainUtils 安全保存用户密码到keychain中 5.MBProgressHUD 很棒的一个加载等待特效框架6.ASIHTTPReque

dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.

http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术:HTML5的api,作为一名前端的菜鸟,没什么可说的,直接分享自己学习的资料: 关于HTML5 的这些新的特性大家可以到Mozilla的开发者社区MDN https://developer.mozilla.org/zh-CN/ 上查HTML5的资料 还有就是发掘到的比较牛逼的一篇博客:http:/