在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_1。web 如今有更好的替代品: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;}
PrettyKitGitHub:https://github.com/vicpenap/PrettyKit 定製了一些UI組件如UITableViewCell、UINavigationBar、UITabBar、UIToolBar等,比系統自帶的更加美觀。
MGBox2GitHub:https://github.com/sobri909/MGBox2 提供一些定製的UI組件能夠更簡單快速的建立表格、網格佈局,以及豐富的文本呈現,基於block的事件機制等,包含:MGBox、MGTableBox、MGTableBoxStyled、MGScrollView、MGButton、MGEvents、MGEasyFrame、MGLine等,其中MGBox還支持screenshot方法用於截圖。
NimbusGitHub:https://github.com/jverkoey/nimbus 著名的框架,提供了一套很是豐富的UI組件,可使開發變得更加簡單、有效率。
FlatUIKitGitHub:https://github.com/Grouper/FlatUIKit 扁平化設計的UI組件,相似於WP或者iOS7的風格。
MUKMediaGalleryGitHub:https://github.com/muccy/MUKMediaGallery 媒體庫效果,支持圖片、視頻及音頻。
PTShowcaseViewControllerGitHub:https://github.com/exalted/PTShowcaseViewController 一樣是一個媒體庫效果,支持的格式更多,包括:圖片、視頻、PDF等.
MWPhotoBrowserGitHub: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-filtersGitHub:https://github.com/esilverberg/ios-image-filters 提供多種圖片濾鏡效果。
PDF Reader Core for iOSGitHub:https://github.com/vfr/Reader PDF閱讀器核心。
DTCoreTextGitHub:https://github.com/Cocoanetics/DTCoreText 支持富文本的顯示如HTML。
FTCoreTextGitHub:https://github.com/FuerteInternational/FTCoreText 富文本視圖
CoreTextWrapperGitHub:https://github.com/akosma/CoreTextWrapper 支持多列的文本視圖
Base64GitHub:https://github.com/nicklockwood/Base64 提供對字符串的Base64編碼
RNCryptorGitHub:https://github.com/rnapier/RNCryptor 提供AES加密方法 |
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 | 移動數據庫 |