iOS 技术浅谈之第四篇 (开发框架)

   在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使我们的开发变得更有效率;同时,也可以从它们的源代码中学习到很多有用的东西。下面介绍几个我开发中常用到的第三方类库,和大家一起学习下。

一、AFNetworking  AFN 网络请求

GitHub下载地址:https://github.com/AFNetworking/AFNetworking

AFNetworking 官网地址:http://afnetworking.com

三步导入 AFN 框架的步骤

1.  将框架程序拖拽进项目

2.   添加 iOS 框架引用

SystemConfiguration.framework

MobileCoreServices.framework

3.  修改 xxx-Prefix.pch 文件

#import <MobileCoreServices/MobileCoreServices.h>

#import <SystemConfiguration/SystemConfiguration.h>

AFN 更详细的使用方法见:http://blog.csdn.net/by3g123/article/details/44490599

当然还有一个更强大的网络框架 ASHttpRequest(ASI),只是ASI的开发者已经没有对它进行更新了,在iOS7和iOS8的兼容性存在一些问题,所以现在在使用AFN。下面提供ASI的下载和使用:

GitHub下载地址:https://github.com/pokeb/asi-http-request

API使用参考:http://blog.csdn.net/by3g123/article/details/44490599

二、SDWebImage 图片异步加载及缓存

GItHub下载地址:https://github.com/rs/SDWebImage

GItHub下载地址:https://github.com/JJSaccolo/UIActivityIndicator-for-SDWebImage

SDWebImage用于异步下载网络上的图片,并支持对图片的缓存等。多数情况下是使用UIImageView+WebCache为UIImageView异步加载图片:

#import <SDWebImage/UIImageView+WebCache.h>
// ...
[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]  placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
   需要注意的是,pladeholderImage 的大小一定要大于UIImageView的大小,否则可能不显示placeholderImage图片。

它还支持block语法用于在加载完成时做一些操作:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"]                      completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {... completion code here ...}];
SDWebImage并不局限于UIImageView上,使用SDWebImageManager完成更多的操作:

SDWebImageManager *manager = [SDWebImageManager sharedManager];[manager downloadWithURL:imageURL                 options:0                 progress:^(NSUInteger receivedSize, long long expectedSize)                 {    
                 // 下载进度        
         }                 completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType)                 {                     if (image) {  
                       // 下载完成                                                }           
      }];
    或者使用Image Downloader也是一样的效果:

[SDWebImageDownloader.sharedDownloader downloadImageWithURL:imageURL        options:0       progress:^(NSUInteger receivedSize, long long expectedSize)       {       
    // 进度       
}  completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {           
     if (image && finished)  {          
     // 下载完成         
      }      
 }];

UIActivityIndicator-for-SDWebImage 为SDWebImage显示加载效果,用于为SDWebImage在UIImageView加载图片时,显示加载效果(UIActivityIndicatorView实现),它提供以下方法:

- (void)setImageWithURL:(NSURL *)url usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
- (void)setImageWithURL:(NSURL *)url completed:(SDWebImageCompletedBlock)completedBlock usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletedBlock)completedBlock usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletedBlock)completedBlock usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletedBlock)completedBlock usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)activityStyle;
    更详细的使用见: http://hackemist.com/SDWebImage/doc/

如果你只是匆匆忙忙下载了一个framework 就回到了自己工程,可能会遇到无法使用的情况:那么下面的文章来解决你遇到的问题:

http://blog.csdn.net/qjlhlh/article/details/8191111


三、JSONKit 数据解析

GItHub下载地址:https://github.com/johnezang/JSONKit

JSONKit提供比SBJson更优异的性能以及更加简便的使用方法,但是中文最好使用utf-8格式(/uXXXX),否则容易造成乱码。

API调用起来非常简单,省去了SBJson那么一大堆的方法:

JSONDecoder* decoder = [[JSONDecoder alloc] initWithParseOptions:JKParseOptionNone];id result = [decoder objectWithData:jsonData];
   详细的使用方法请看它的GitHub主页。

四、MBProgressHUD 提示效果

GitHub下载地址:https://github.com/matej/MBProgressHUD

一般会在.m文件实现MBProgressHUDDelegate协议,并声明HUD变量:

@interface SampleViewController ()<MBProgressHUDDelegate>{ 
   MBProgressHUD *HUD;
}
#pragma mark MBProgressHUDDelegate methods
- (void)hudWasHidden:(MBProgressHUD *)hud {	
// Remove HUD from screen when the       HUD was hidded	
     [HUD removeFromSuperview];	
     HUD = nil;
}


在执行某个异步请求时开始调用:

HUD = [MBProgressHUD showHUDAddedTo:self.webView animated:YES]; 
   HUD.labelText = @"正在请求...";  
  // mode参数可以控制显示的模式   
 HUD.mode = MBProgressHUDModeText;    HUD.delegate = self;


请求完成时隐藏提示效果:

[HUD hide:YES];


对于同步方法一般都是用showWhileExecuting方法,方法执行完成之后会自动隐藏提示效果:

[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];

类似的框架还有:SVProgressHUD 、ZAActivityBar 

GitHub下载地址:https://github.com/samvermette/SVProgressHUD

   GitHub 下载地址:https://github.com/zacaltman/ZAActivityBar


五、PullToRefresh 下拉刷新

GitHub下载地址:https://github.com/leah/PullToRefresh

PullToRefresh提供比EGOTableViewPullRefresh更加简单的使用方法,只要继承自PullRefreshTableViewController,再实现refresh方法即可:

- (void)refresh {    // 加载数据
    [self.tableView reloadData]; // 重新载入UITableView
    [self stopLoading]; //停止动画
}

类似的框架还有:EGOTableViewPullRefreshSTableViewController

GitHub下载地址:https://github.com/enormego/EGOTableViewPullRefresh

     GitHub下载地址:https://github.com/shiki/STableViewController


暂时就介绍这几个了,如还有很好用的希望大家可以提供给我。




最近在深入学习AFN框架中,希望大家可以 一起交流。












  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值