iOS開發中經常使用到的第三方總結

在iOS開發中不可避免的會用到一些第三方類庫,它們提供了不少實用的功能,使咱們的開發變得更有效率;同時,也能夠從它們的源代碼中學習到不少有用的東西。 html

 

TZImagePickerController 圖片選擇

GitHub:https://github.com/banchichen/TZImagePickerControllerios

IQKeyboardManager 鍵盤處理神器

簡單快捷的解決鍵盤遮蓋輸入框的問題git

GitHub:https://github.com/hackiftekhar/IQKeyboardManager程序員

Reachability 檢測網絡鏈接

用來檢查網絡鏈接是否可用:包括WIFI和WWAN(3G/EDGE/CDMA等)兩種工做模式。github

能夠從Apple網站下載到:http://developer.apple.com/library/ios/#samplecode/Reachability/History/History.html#//apple_ref/doc/uid/DTS40007324-RevisionHistory-DontLinkElementID_1web

如今有更好的替代品:https://github.com/tonymillion/Reachability,比Apple提供的兼容性更好,並且更加好用,更具體的使用方法請看它提供的例子。正則表達式

Reachability* reach = [Reachability reachabilityWithHostname:@"www.google.com"];reach.reachableBlock = ^(Reachability*reach) {    NSLog(@"網絡可用!");};reach.unreachableBlock = ^(Reachability*reach) {    NSLog(@"網絡不可用!");};// 開始監聽[reach startNotifier];

 

ASIHTTPRequest 網絡請求

ASIHTTPRequest是對CFNetwork API的一個包裝,它提供了一套更加簡潔的API,使用起來也更加簡單。sql

官方網站:http://allseeing-i.com/ASIHTTPRequest/數據庫

GitHub:https://github.com/pokeb/asi-http-request編程

它不只僅支持基本的HTTP請求,並且支持基於REST的服務(GET/POST/PUT/DELETE)。

最讓人喜歡的是,它支持block語法:

   NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];   __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];   [request setCompletionBlock:^{      // Use when fetching text data      NSString *responseString = [request responseString];       // Use when fetching binary data      NSData *responseData = [request responseData];   }];   [request setFailedBlock:^{      NSError *error = [request error];   }];   [request startAsynchronous];

它的ASIFormDataRequest子類能夠橫容易的提交表單數據和文件:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];[request setPostValue:@"Ben" forKey:@"first_name"];[request setPostValue:@"Copsey" forKey:@"last_name"];// Upload a file on disk[request setFile:@"/Users/ben/Desktop/ben.jpg" withFileName:@"myphoto.jpg" andContentType:@"image/jpeg"forKey:@"photo"]; // Upload an NSData instance[request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"photo"];

詳細的使用方法請下載相應的源代碼及例子,或者從官方的使用說明http://allseeing-i.com/ASIHTTPRequest/How-to-use開始。

 

MBProgressHUD 提示效果

支持各類狀態加載的提示效果,以及帶進度的提示效果。

GitHub:https://github.com/matej/MBProgressHUD

通常會在.m文件實現MBProgressHUDDelegate協議,並聲明HUD變量:

@interface SampleViewController ()<MBProgressHUDDelegate>{    MBProgressHUD *HUD;}#pragma mark -#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 提示效果

GitHub:https://github.com/samvermette/SVProgressHUD

SVProgressHUD和MBProgressHUD效果差很少,不過不須要使用協議,同時也不須要聲明實例。

直接經過類方法進行調用便可:

[SVProgressHUD method]

可使用如下方法來顯示狀態:

+ (void)show;+ (void)showWithMaskType:(SVProgressHUDMaskType)maskType;+ (void)showWithStatus:(NSString*)string;+ (void)showWithStatus:(NSString*)string maskType:(SVProgressHUDMaskType)maskType;

若是須要明確的進度,則使用如下方法:

+ (void)showProgress:(CGFloat)progress;+ (void)showProgress:(CGFloat)progress status:(NSString*)status;+ (void)showProgress:(CGFloat)progress status:(NSString*)status maskType:(SVProgressHUDMaskType)maskType;

經過dismiss方法來隱藏提示:

+ (void)dismiss;

另外提供瞭如下方法用於顯示狀態,並在1秒後自動隱藏提示(使用的圖標來源於Glyphish:http://www.glyphish.com/):

+ (void)showSuccessWithStatus:(NSString*)string;+ (void)showErrorWithStatus:(NSString *)string;+ (void)showImage:(UIImage*)image status:(NSString*)string; // use 28x28 white pngs

 

ZAActivityBar 提示效果

GitHub:https://github.com/zacaltman/ZAActivityBar

ZAActivityBar和SVProgressHUD很是類似,它提供了更加簡潔的API來顯示提示效果。

ZAActivityBar使用的動畫效果來源於ZKBounceAnimation(https://github.com/khanlou/SKBounceAnimation),成功、失敗的狀態圖標來源於Pictos(http://pictos.cc/)。

顯示加載狀態:

[ZAActivityBar showWithStatus:@"加載中..."];

顯示成功、失敗狀態:

[ZAActivityBar showSuccessWithStatus:@"成功!"];[ZAActivityBar showErrorWithStatus:@"失敗!"];

隱藏提示:

[ZAActivityBar dismiss];

 

SBJson JSON解析

官方: http://sbjson.org/

GitHub:https://github.com/stig/json-framework

API使用起來稍顯繁瑣,特別是初始化的時候:

@interface TestViewController ()<SBJsonStreamParserAdapterDelegate> {    SBJsonStreamParser *parser;    SBJsonStreamParserAdapter *adapter;}// 冗長的初始化方法足以嚇到一大片人- (void)initSBJSON{    // We don't want *all* the individual messages from the	// SBJsonStreamParser, just the top-level objects. The stream	// parser adapter exists for this purpose.	adapter = [[SBJsonStreamParserAdapter alloc] init];		// Set ourselves as the delegate, so we receive the messages	// from the adapter.	adapter.delegate = self;		// Create a new stream parser..	parser = [[SBJsonStreamParser alloc] init];		// .. and set our adapter as its delegate.	parser.delegate = adapter;		// Normally it's an error if JSON is followed by anything but	// whitespace. Setting this means that the parser will be	// expecting the stream to contain multiple whitespace-separated	// JSON documents.	parser.supportMultipleDocuments = YES;}#pragma mark SBJsonStreamParserAdapterDelegate methods- (void)parser:(SBJsonStreamParser *)parser foundArray:(NSArray *)array {    [NSException raise:@"unexpected" format:@"Should not get here"];}- (void)parser:(SBJsonStreamParser *)parser foundObject:(NSDictionary *)dict {    NSLog(@"SBJson parser foundObject");    // 處理返回的數據}// 使用ASIHTTPRequest請求測試- (void) loadData {    __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];    [request setRequestMethod:@"POST"];    [request setCompletionBlock:^{        // Use when fetching text data        //NSString *responseString = [request responseString];        // Use when fetching binary data        NSData *responseData = [request responseData];        NSLog(@"Connection didReceiveData of length: %u", responseData.length);                // Parse the new chunk of data. The parser will append it to        // its internal buffer, then parse from where it left off in        // the last chunk.        SBJsonStreamParserStatus status = [parser parse:responseData];                if (status == SBJsonStreamParserError) {            NSLog(@"Parser error: %@", parser.error);        } else if (status == SBJsonStreamParserWaitingForData) {            NSLog(@"Parser waiting for more data");        }    }];    [request setFailedBlock:^{        NSError *error = [request error];        NSLog(@"failed - %@ %@", [error localizedDescription], error);    }];    [request startAsynchronous];}

 

JSONKit JSON解析

GitHub:https://github.com/johnezang/JSONKit

提供比SBJson更優異的性能以及更加簡便的使用方法,可是中文最好使用utf-8格式(/uXXXX),不然容易形成亂碼。

API調用起來很是簡單,省去了SBJson那麼一大堆的方法:

JSONDecoder* decoder = [[JSONDecoder alloc] initWithParseOptions:JKParseOptionNone];id result = [decoder objectWithData:jsonData];

詳細的使用方法請看它的GitHub主頁。

 

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顯示加載效果

GitHub:https://github.com/JJSaccolo/UIActivityIndicator-for-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;

 

UIImage+Resize 調整圖片大小

GitHub:https://github.com/coryalder/UIImage_Resize

提供多種方法爲圖片設置透明度、圓角、裁剪、調整大小等:

- (UIImage *)imageWithAlpha;- (UIImage *)transparentBorderImage:(NSUInteger)borderSize;- (UIImage *)roundedCornerImage:(NSInteger)cornerSize borderSize:(NSInteger)borderSize;- (UIImage *)croppedImage:(CGRect)bounds;- (UIImage *)thumbnailImage:(NSInteger)thumbnailSize          transparentBorder:(NSUInteger)borderSize               cornerRadius:(NSUInteger)cornerRadius       interpolationQuality:(CGInterpolationQuality)quality;- (UIImage *)resizedImage:(CGSize)newSize     interpolationQuality:(CGInterpolationQuality)quality;- (UIImage *)  resizedImageWithContentMode:(UIViewContentMode)contentMode                       bounds:(CGSize)bounds         interpolationQuality:(CGInterpolationQuality)quality;

更詳細使用見:http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/

 

ImageCacheResize 異步加載圖片、緩存及調整大小

GitHub:https://github.com/toptierlabs/ImageCacheResize

整合了SDWebImage和UIImage+Resize的功能,用於圖片的異步加載、緩存、以及下載完成後調整大小並顯示在UIImageView上。

提供瞭如下API用於加載圖片以及加載完成後調整圖片大小:

- (void)setImageWithURL:(NSURL *)url andCropToBounds:(CGRect)bounds;- (void)setImageWithURL:(NSURL *)url andResize:(CGSize)size withContentMode:(UIViewContentMode)mode;- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder andCropToBounds:(CGRect)bounds;- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options  andResize:(CGSize)size;- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options  andResize:(CGSize)size withContentMode:(UIViewContentMode)mode;- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options  andCropToBounds:(CGRect)bounds;

使用方法和SDWebImage同樣簡單,如如下官方例子:

[imageview setImageWithURL:[NSURL URLWithString:@"http://t0.gstatic.com/images?q=tbn:ANd9GcQfraHpiabjEY8iDdBe9OUQYHMtwfuAv9ZRR0RYKuoVF_EpE8Fp5A"] andResize:CGSizeMake(30, 30) withContentMode:UIViewContentModeScaleAspectFit]; // 按比例縮放[imageview setImageWithURL:[NSURL URLWithString:@"http://t0.gstatic.com/images?q=tbn:ANd9GcQfraHpiabjEY8iDdBe9OUQYHMtwfuAv9ZRR0RYKuoVF_EpE8Fp5A"] andCropToBounds:CGRectMake(0, 0, 100, 100)]; // 裁剪成100x100大小

 

EGOTableViewPullRefresh  下拉刷新

GitHub:https://github.com/enormego/EGOTableViewPullRefresh

這是最先出現的爲UITableView提供下拉刷新功能的類庫,使用起來稍顯麻煩,須要實現諸多協議(代碼取自官方DEMO):

#import "EGORefreshTableHeaderView.h"@interface RootViewController : UITableViewController  <EGORefreshTableHeaderDelegate, UITableViewDelegate, UITableViewDataSource>{	EGORefreshTableHeaderView *_refreshHeaderView;	//  是否正在加載中 	BOOL _reloading;}- (void)viewDidLoad {    [super viewDidLoad];    	if (_refreshHeaderView == nil) {		EGORefreshTableHeaderView *view = [[EGORefreshTableHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f - self.tableView.bounds.size.height, self.view.frame.size.width, self.tableView.bounds.size.height)];		view.delegate = self;		[self.tableView addSubview:view];		_refreshHeaderView = view;		[view release];	}	//  更新最後加載時間	[_refreshHeaderView refreshLastUpdatedDate];}#pragma mark -#pragma mark Data Source Loading / Reloading Methods- (void)reloadTableViewDataSource{	//  在這裏加入代碼用於獲取數據	_reloading = YES;}- (void)doneLoadingTableViewData{	//  數據加載完成時調用這個方法	_reloading = NO;	[_refreshHeaderView egoRefreshScrollViewDataSourceDidFinishedLoading:self.tableView];}#pragma mark -#pragma mark UIScrollViewDelegate Methods- (void)scrollViewDidScroll:(UIScrollView *)scrollView{		[_refreshHeaderView egoRefreshScrollViewDidScroll:scrollView];}- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{	[_refreshHeaderView egoRefreshScrollViewDidEndDragging:scrollView];}#pragma mark -#pragma mark EGORefreshTableHeaderDelegate Methods- (void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view{	[self reloadTableViewDataSource];	[self performSelector:@selector(doneLoadingTableViewData) withObject:nil afterDelay:3.0];}- (BOOL)egoRefreshTableHeaderDataSourceIsLoading:(EGORefreshTableHeaderView*)view{	return _reloading; // should return if data source model is reloading}- (NSDate*)egoRefreshTableHeaderDataSourceLastUpdated:(EGORefreshTableHeaderView*)view{	return [NSDate date]; // should return date data source was last changed}

 

PullToRefresh 下拉刷新

GitHub:https://github.com/leah/PullToRefresh

PullToRefresh提供比EGOTableViewPullRefresh更加簡單的使用方法,只要繼承自PullRefreshTableViewController,再實現refresh方法便可:

- (void)refresh {    // 加載數據    [self.tableView reloadData]; // 從新載入UITableView    [self stopLoading]; //中止動畫}

 

STableViewController  下拉刷新、上拉加載更多

GitHub:https://github.com/shiki/STableViewController

STableViewController比PullToRefresh多了一個上拉加載更多功能,使用上也差很少簡單,須要繼承自STableViewController,再實現一些方法:

- (void) viewDidLoad{  [super viewDidLoad];    self.title = @"STableViewController Demo";  [self.tableView setBackgroundColor:[UIColor lightGrayColor]];    // 須要建立兩個自定義視圖用於顯示"下拉刷新"、"上拉加載更多"  self.headerView = headerView;    self.footerView = footerView;  }#pragma mark - Pull to Refresh- (void) pinHeaderView{  [super pinHeaderView];    // 下拉刷新視圖顯示一些加載動畫}- (void) unpinHeaderView{  [super unpinHeaderView];    // 下拉刷新視圖中止動畫}- (void) headerViewDidScroll:(BOOL)willRefreshOnRelease scrollView:(UIScrollView *)scrollView{  // 下拉刷新視圖顯示狀態信息  if (willRefreshOnRelease)    //hv.title.text = @"鬆開後刷新...";  else    //hv.title.text = @"下拉刷新...";}- (BOOL) refresh{  if (![super refresh])    return NO;    // 下拉刷新加載數據  [self performSelector:@selector(addItemsOnTop) withObject:nil afterDelay:2.0];  return YES;}#pragma mark - Load More- (void) willBeginLoadingMore{  // 上拉加載更多視圖加載動畫}- (void) loadMoreCompleted{  [super loadMoreCompleted];  // 上拉加載更多視圖中止動畫    if (!self.canLoadMore) {    //沒有更多數據的時候執行代碼...  }}- (BOOL) loadMore{  if (![super loadMore])    return NO;    // 上拉加載更多數據  [self performSelector:@selector(addItemsOnBottom) withObject:nil afterDelay:2.0];  return YES;}// - (void) addItemsOnTop{  // 加載數據...    [self.tableView reloadData];    // 數據加載完成通知上拉視圖  [self refreshCompleted];}- (void) addItemsOnBottom{  // 加載更多數據...  [self.tableView reloadData];    // 經過判斷設置是否能夠加載更多  //self.canLoadMore = NO;    // 數據加載完成通知下拉視圖  [self loadMoreCompleted];}

 

SVPullToRefresh 下拉刷新、上拉加載更多

GitHub:https://github.com/samvermette/SVPullToRefresh

包含SVPullToRefresh + SVInfiniteScrolling爲UITableView提供下拉刷新、上拉加載更多功能。

使用起來也至關簡單,只要在UITableViewController裏實現如下方法:

- (void)viewDidLoad {    [super viewDidLoad];    __weak SVViewController *weakSelf = self;        // 設置下拉刷新    [self.tableView addPullToRefreshWithActionHandler:^{        [weakSelf insertRowAtTop];    }];            // 設置上拉加載更多    [self.tableView addInfiniteScrollingWithActionHandler:^{        [weakSelf insertRowAtBottom];    }];}- (void)viewDidAppear:(BOOL)animated {    [tableView triggerPullToRefresh];}- (void)insertRowAtTop {    // 獲取數據....        // 中止動畫    [self.tableView.pullToRefreshView stopAnimating];}- (void)insertRowAtBottom {    // 獲取數據....        // 中止動畫    [weakSelf.tableView.infiniteScrollingView stopAnimating];}

 

CMPopTipView 提示信息

GitHub:https://github.com/chrismiles/CMPopTipView

CMPopTipView用於在一些視圖上顯示提示信息:

self.tipView = [[CMPopTipView alloc] initWithMessage:@"提示消息"];self.tipView.delegate = self;[self.tipView presentPointingAtView:anyButton inView:self.view animated:YES]; // 點擊按鈕顯示[self.tipView presentPointingAtBarButtonItem:barButtonItem animated:YES]; // 點擊導航欄按鈕顯示    #pragma mark CMPopTipViewDelegate methods- (void)popTipViewWasDismissedByUser:(CMPopTipView *)popTipView {  // 清理資源  self.tipView = nil;}

 

PrettyKit 

GitHub:https://github.com/vicpenap/PrettyKit

定製了一些UI組件如UITableViewCell、UINavigationBar、UITabBar、UIToolBar等,比系統自帶的更加美觀。

 

MGBox2 

GitHub:https://github.com/sobri909/MGBox2

提供一些定製的UI組件能夠更簡單快速的建立表格、網格佈局,以及豐富的文本呈現,基於block的事件機制等,包含:MGBox、MGTableBox、MGTableBoxStyled、MGScrollView、MGButton、MGEvents、MGEasyFrame、MGLine等,其中MGBox還支持screenshot方法用於截圖。

 

Nimbus

GitHub:https://github.com/jverkoey/nimbus

著名的框架,提供了一套很是豐富的UI組件,可使開發變得更加簡單、有效率。

 

FlatUIKit 

GitHub:https://github.com/Grouper/FlatUIKit

扁平化設計的UI組件,相似於WP或者iOS7的風格。

 

MUKMediaGallery 

GitHub:https://github.com/muccy/MUKMediaGallery

媒體庫效果,支持圖片、視頻及音頻。

 

PTShowcaseViewController 

GitHub:https://github.com/exalted/PTShowcaseViewController

一樣是一個媒體庫效果,支持的格式更多,包括:圖片、視頻、PDF等.

 

MWPhotoBrowser 

GitHub:https://github.com/mwaterfall/MWPhotoBrowser

圖片展現效果,支持本地及遠程的圖片,使用也比較簡單,只要實現MWPhotoBrowserDelegate協議:

@interface TestViewController ()<MWPhotoBrowserDelegate>{    NSArray *_photos;}-(void) doAction {        NSMutableArray *photos = [[NSMutableArray alloc] init];        for (...) {            MWPhoto* photo = [MWPhoto photoWithURL:[NSURL URLWithString:url]]; // 設置圖片地址            photo.caption = description; // 設置描述            [photos addObject:photo];        }        _photos = photos;        MWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithDelegate:self];        browser.displayActionButton = YES;                UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:browser];        nc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;        [self presentModalViewController:nc animated:YES];}#pragma mark - MWPhotoBrowserDelegate- (NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser {    return _photos.count;}- (MWPhoto *)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index {    if (index < _photos.count)        return [_photos objectAtIndex:index];    return nil;}

 

ios-image-filters 

GitHub:https://github.com/esilverberg/ios-image-filters

提供多種圖片濾鏡效果。

 

PDF Reader Core for iOS

GitHub:https://github.com/vfr/Reader

PDF閱讀器核心。

 

DTCoreText

GitHub:https://github.com/Cocoanetics/DTCoreText

支持富文本的顯示如HTML。

 

FTCoreText

GitHub:https://github.com/FuerteInternational/FTCoreText

富文本視圖

 

CoreTextWrapper 

GitHub:https://github.com/akosma/CoreTextWrapper

支持多列的文本視圖

 

Base64

GitHub:https://github.com/nicklockwood/Base64

提供對字符串的Base64編碼

 

RNCryptor 

GitHub:https://github.com/rnapier/RNCryptor

提供AES加密方法

網絡通訊
一、ASIHTTPRequest
這是一個經典的老庫,功能徹底而強大,但已經中止更新好久了(iOS5.0中止更新,可是我最近看github上這個項目有新改動)。在不一樣iOS版本上略微有一些小問題(提醒顯示上的),因此用的時候仍是稍微修改一下比較好。
下載地址:https://github.com/pokeb/asi-http-request
 
二、AFNetworking
輕量級的通信類庫,使用很是簡單。
下載地址:https://github.com/AFNetworking/AFNetworking
 
三、MKNetworkKit
最近作的不錯的一個通信類庫,具備AFNetworking和ASIHTTPRequest雙方的優勢,甚至功能更豐富一些,可是本人尚未使用過。
下載地址:https://github.com/MugunthKumar/MKNetworkKit
 
Socket
一、CocoaAsyncSocket
CocoaAsyncSocket是用的最普遍的socket開發庫,省略了程序員與CFNetwork接觸的時間,延長了程序員壽命。
下載地址:https://github.com/robbiehanson/CocoaAsyncSocket
 
二、SocketRocket
SocketRocket是Square開發的一個實現webSocket的庫,能夠輕鬆的實現即時通訊。
下載地址:https://github.com/square/SocketRocket
 
數據解析
一、SBJSON
SBJson的解析速度實際上是比較慢的,可是不知道爲何它倒是用的最廣的。
下載地址:
 
二、JSONKit
JSONKit解析速度上最接近iOS原生解析類,固然iOS5.0纔開始支持原生解析,因此選擇一個庫仍是很必要的。
下載地址:https://github.com/johnezang/JSONKit
 
三、TouchJSON
TouchJSON用的也比較普遍.
下載地址:https://github.com/TouchCode/TouchJSON
 
四、json-framework
沒有用過。
下載地址:https://github.com/stig/json-framework
 
五、TBXML
TBXML是一套輕量級的DOM方式的XML解析類庫,有很好的性能和低內存佔用,不過它不對XML格式進行校驗,不支持XPath,而且只支持解析,不支持對XML進行修改。
下載地址:https://github.com/71squared/TBXML
 
六、TouchXML
TouchXML這也是一套DOM方式的XML解析類庫,支持XPath,不支持XML的修改。
下載地址:https://github.com/TouchCode/TouchXML
 
七、KissXML
KissXML這是一套基於TouchXML的XML解析類庫,只不過實現了支持XML的修改。
下載地址:https://github.com/robbiehanson/KissXML
 
八、GDataXML
GDataXML是Google開發的DOM方式XML解析類庫,支持讀取和修改XML文檔,支持XPath方式查詢。
下載地址:
 
第三方管理
一、fmdb
fmdb是一個數據庫管理庫,封裝了sqlite相關的sql語句,簡化數據庫操做。
下載地址:https://github.com/ccgus/fmdb
 
二、ssziparchive
ssziparchive與sstoolkit是同一個做者,這哥們兒簡直是個天才。
https://github.com/soffes/ssziparchive
 
三、ZipArchive
ZipArchive一樣是minizip的封裝。
https://github.com/mattconnolly/ZipArchive
 
四、Objective-Zip
Objective-Zip將Zlib和MiniZip用Objective-C進行了封裝,使用起來很是簡單。
https://github.com/flyingdolphinstudio/Objective-Zip
 
五、zxing
zxing是一個開源Java類庫用於解析多種格式的1D/2D條形碼。目標是可以對QR編碼、DataMatrix、UPC的1D條形碼進行解碼。 其提供了多種平臺下的客戶端。
https://github.com/zxing/zxing
 
六、ZBar
ZBar 是款桌面電腦用條形碼/二維碼掃描工具,支持攝像頭及圖片掃描,支持多平臺包括 iPhone 手機。同時 ZBar提供了二維碼掃描的 API 開發包。
https://github.com/ZBar/ZBar
 
七、ObjQREncoder 
ObjQREncoder 是 Objective-C 的二維碼的編碼器,用於生成二維碼圖像。
https://github.com/jverkoey/ObjQREncoder
 
八、OpenUDID
OpenUDID是iOS禁止使用系統UDID以後的新解決方法。
https://github.com/ylechelle/OpenUDID
 
九、RegexKitLite
RegexKitLite 是一個輕量級的 Objective-C 的正則表達式庫,支持 Mac OS X 和 iOS,使用ICU 庫開發。
https://github.com/wezm/RegexKitLite
 
十、STUtils
STUtils是一系列的工具集,包含了不少對於iOS原生類的擴展,固然也包含一個用於安全保存用戶密碼STKeyChain。
https://github.com/ldandersen/STUtils
 
十一、scifihifi-iphone
scifihifi-iphone用於安全保存用戶密碼到keychain中。
https://github.com/ldandersen/scifihifi-iphone
 
十二、sskeychain
sskeychain同scifihifi-iphone同樣,不過屬於輕量級。
https://github.com/soffes/sskeychain
 
1三、SDWebImage
SDWebImage調用網站上的圖片,跟本地調用內置在應用包裏的圖片同樣簡單。操做也很簡單。
https://github.com/rs/SDWebImage
 
1四、umeng
umeng既有統計分析,也有社會化組件。可是統計分析的用戶數彷佛明顯多於其社會化組件的用戶。
http://dev.umeng.com/analytics/ios/sdk-download
 
第三方UI
一、appirater
appirater是一個能夠直接使用到任何iPhone應用中的開源類,用於提醒用戶在打開App時,對應用進行評論或打分。
下載地址:https://github.com/arashpayan/appirater
 
二、FDStatusBarNotifierView
FDStatusBarNotifierView 實現了在狀態欄中顯示自定義提醒信息的功能。
下載地址:https://github.com/frankdilo/FDStatusBarNotifierView
 
三、MTStatusBarOverlay
MTStatusBarOverlay 是一個定製的 iOS狀態欄,用於覆蓋系統默認的狀態欄。
下載地址:https://github.com/myell0w/MTStatusBarOverlay
 
四、iCarousel
iCarousel 是一個用來簡化在 iOS 上實現旋轉木馬時的視圖切換效果,支持 iPad,提供多種切換效果。
下載地址:https://github.com/nicklockwood/iCarousel
 
五、MBProgressHUD
MBProgressHUD就很少說了,偉大的菊花。
下載地址:https://github.com/jdg/MBProgressHUD
 
六、SVProgressHUD
SVProgressHUD是一個輕量級的菊花。
下載地址:https://github.com/samvermette/SVProgressHUD
 
七、MWPhotoBrowser
MWPhotoBrowser 實現了一個照片瀏覽器相似 iOS自帶的相冊應用,可顯示來自手機的圖片或者是網絡圖片,可自動從網絡下載圖片並進行緩存。可對圖片進行縮放等操做。
下載地址:https://github.com/mwaterfall/MWPhotoBrowser
 
八、ShareSDK
ShareSDK支持分享到新浪微博、微信好友、微信朋友圈、QQ好友、騰迅微博、QQ空間、人人網、開心網、豆瓣、搜狐微博、網易微博、短信、郵件、打印、拷貝等。可是因爲這個SDK包很大,因此用的時候必定要精簡一下。下載地址: http://sharesdk.cn/Download
 
 

1.json json編碼解碼
2.GTMBase64 base64編碼解碼
3.TouchXML xml解析
4.SFHFKeychainUtils 安全保存用戶密碼到keychain中
5.MBProgressHUD 很棒的一個加載等待特效框架
6.ASIHTTPRequest http等相關協議封裝
7.EGORefreshTableHeaderView 下拉刷新代碼
8.AsyncImageView 異步加載圖片並緩存代碼
9.相似setting的豎立也分欄程序 
10.MBProgressHUD——進展指示符庫
11.Flurry——詳盡的使用統計
12.CorePlot——2D圖形繪圖儀
13.GData client——iPhone上全部Google相關服務的類庫
14.SDWebImage——簡化網絡圖片處理
15.RegexKitLite——正則表達式支持

 

掃描wifi信息:
http://code.google.com/p/uwecaugmentedrealityproject/
http://code.google.com/p/iphone-wireless/


條形碼掃描:
http://zbar.sourceforge.net/iphone/sdkdoc/install.html

 

720全景顯示panoramagl

http://code.google.com/p/panoramagl/

 
 
 
 
名稱 做用 說明
AFNetworking 基於HTTP協議聯網  
SDWebImage 圖片緩存和異步加載  
YYWebImage 圖片緩存和異步加載  
Ono XML解析  
RaptureXML XML解析  
KissXML XML解析  
YYModel JSON-模型對象轉換(非侵入性) 國內90後程序員郭燿源神做
MJExtesion JSON-模型對象轉換(非侵入性)  
JSONModel JSON-模型對象轉換(侵入性)  
FMDB SQLite數據庫操做  
pop 動畫特效  
popping 動畫特效  
百度地圖 地圖 SDK下載地址 - http://lbsyun.baidu.com/
高德地圖 地圖 SDK下載地址 - http://lbs.amap.com/
環信 即時通信 SDK下載地址 - http://www.easemob.com/
融雲 即時通信 SDK下載地址 - http://www.rongcloud.cn/
極光推送 推送 SDK下載地址 - http://www.jpush.cn/
友盟推送 推送 SDK下載地址 - http://www.umeng.com/push
百度推送 推送 SDK下載地址 - http://push.baidu.com
ZXing Objc 二維碼  
訊飛 語音識別/合成等 SDK下載地址 - http://www.xfyun.cn/
GPUImage 濾鏡  
FXBlurView 模糊  
StreamingKit 流媒體  
FreeStreamer 流媒體  
DOUAudioStreamer 流媒體  
ShareSDK 社會化分享 SDK下載地址 - http://www.mob.com/
友盟分享 社會化分享 SDK下載地址 - http://www.umeng.com/social
Masonry 自動佈局  
MJRefresh 下拉刷新和觸底加載  
MBProgressHUD 進度提示  
SVProgressHUD 進度提示  
KVNProgress 進度提示  
IQKeyboardManager 鍵盤管理  
YYKeyboardManager 鍵盤管理  
YYText 圖文混排 國內90後程序員郭燿源神做
ZSSRichTextEditor 富文本編輯  
YYCache 緩存  
TMCache 緩存  
CocoaAsyncSocket 異步套接字  
支付寶 支付 SDK下載地址 - https://openhome.alipay.com/platform/home.htm
微信支付 支付 SDK下載地址 - https://pay.weixin.qq.com/
SMS 短信驗證碼 SDK下載地址 - http://www.mob.com
MGTemplateEngine 模板引擎  
GRMustache 模板引擎  
sskeychain 鑰匙串  
RESideMenu 側邊欄/側滑  
MMDrawerController 側邊欄/側滑  
MWPhotoBrowser 圖像瀏覽  
ReactiveCocoa 響應式編程  
WebViewJavaScriptBridge Objective-C和JavaScript混編  
NJKWebViewProgress UIWebView進度條  
LTNavigationBar 導航欄定製  
FoldingTabBar.iOS 可摺疊分欄條  
AwesomeMenu 可摺疊菜單  
UITableView-FDTemplateLayoutCell 表格視圖單元格自適應  
PNChart 統計圖表  
Specta TDD/BDD  
Kiwi TDD/BDD  
iCarousel 輪播  
MagicalRecord 簡化CoreData  
RestKit RESTful客戶端  
CocoaLumberjack 日誌  
FlatUIKit 扁平化UI  
Realm 移動數據庫
相關文章
相關標籤/搜索