iOS仿微博圖片瀏覽器
KNPhotoBrower
高仿微博圖片瀏覽器
PhotoBrower.gif
一.功能描述及要點(diǎn)
1.加載網(wǎng)絡(luò)九宮格圖片,collectionView,scrollView
2.SDWebImage下載圖片,KNProgressHUD顯示加載進(jìn)度
3.高仿微博,顯示動(dòng)畫(huà),KNToast提示
二.方法調(diào)用
1.創(chuàng)建KNPhotoBrower,并傳入相應(yīng)的參數(shù)
// 每一個(gè)圖片控件對(duì)象, 對(duì)一一對(duì)應(yīng) KNPhotoItems ,再將多個(gè)KNPhotoItems 對(duì)象放入數(shù)組 KNPhotoItems *items = [[KNPhotoItems alloc] init]; items.url = [urlArr[i] stringByReplacingOccurrencesOfString:@"thumbnail" withString:@"bmiddle"]; items.sourceView = imageView; KNPhotoBrower *photoBrower = [[KNPhotoBrower alloc] init]; photoBrower.itemsArr = [_itemsArray copy];// KNPhotoItems對(duì)象的數(shù)組 photoBrower.currentIndex = tap.view.tag;// 當(dāng)前點(diǎn)擊的哪個(gè)圖片 photoBrower.actionSheetArr = [self.actionSheetArray mutableCopy];//設(shè)置 ActionSheet的選項(xiàng) [photoBrower present];// 顯示
2.提供代理方法 --> KNPhotoBrowerDelegate
/* PhotoBrower 即將消失 */ - (void)photoBrowerWillDismiss; /* PhotoBrower 右上角按鈕的點(diǎn)擊 */ - (void)photoBrowerRightOperationActionWithIndex:(NSInteger)index; /* PhotoBrower 保存圖片是否成功 */ - (void)photoBrowerWriteToSavedPhotosAlbumStatus:(BOOL)success;
3.提供 消失方法
[_photoBrower dismiss];
4.設(shè)置 參數(shù)
/** * 是否需要右上角的按鈕. Default is YES; */ @property (nonatomic, assign) BOOL isNeedRightTopBtn; /** * 是否需要 頂部 1 / 9 控件 ,Default is YES */ @property (nonatomic, assign) BOOL isNeedPageNumView; /** * 是否需要 底部 UIPageControl, Default is NO */ @property (nonatomic, assign) BOOL isNeedPageControl; /** * 存放 ActionSheet 彈出框的內(nèi)容 :NSString類型 */ @property (nonatomic, strong) NSMutableArray *actionSheetArr;
5.關(guān)于彈出框的內(nèi)容,可在KNPhotoBrower.m 的operationBtnIBAction 方法中增減
#pragma mark - 右上角 按鈕的點(diǎn)擊 - (void)operationBtnIBAction{ __weak typeof(self) weakSelf = self; if(_actionSheetArr.count != 0){ // 如果是自定義的 選項(xiàng) KNActionSheet *actionSheet = [[KNActionSheet alloc] initWithCancelBtnTitle:nil destructiveButtonTitle:nil otherBtnTitlesArr:[_actionSheetArr copy] actionBlock:^(NSInteger buttonIndex) { // 讓代理知道 是哪個(gè)按鈕被點(diǎn)擊了 if([weakSelf.delegate respondsToSelector:@selector(photoBrowerRightOperationActionWithIndex:)]){ [weakSelf.delegate photoBrowerRightOperationActionWithIndex:buttonIndex]; } #warning 如果傳入的 ActionSheetArr 有下載圖片這一選項(xiàng). 則在這里調(diào)用和下面一樣的方法 switch.....,如果沒(méi)有下載圖片,則通過(guò)代理方法去實(shí)現(xiàn)... 目前不支持刪除功能 }]; [actionSheet show]; }else{ KNActionSheet *actionSheet = [[KNActionSheet alloc] initWithCancelBtnTitle:nil destructiveButtonTitle:nil otherBtnTitlesArr:@[@"保存圖片",@"轉(zhuǎn)發(fā)微博",@"贊"] actionBlock:^(NSInteger buttonIndex) { // 讓代理知道 是哪個(gè)按鈕被點(diǎn)擊了 if([weakSelf.delegate respondsToSelector:@selector(photoBrowerRightOperationActionWithIndex:)]){ [weakSelf.delegate photoBrowerRightOperationActionWithIndex:buttonIndex]; } switch (buttonIndex) { case 0:{ SDWebImageManager *mgr = [SDWebImageManager sharedManager]; KNPhotoItems *items = _itemsArr[_currentIndex]; if(![mgr diskImageExistsForURL:[NSURL URLWithString:items.url]]){ [[KNToast shareToast] initWithText:@"圖片需要下載完成"]; return ; }else{ UIImage *image = [[mgr imageCache] imageFromDiskCacheForKey:items.url]; dispatch_async(dispatch_get_main_queue(), ^{ UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL); }); } } default: break; } }]; [actionSheet show]; } }
補(bǔ)充
1.目前適合 九宮格樣式,collectionView,scrollView
2.如果有bug, 請(qǐng)?jiān)贕ithub上通過(guò) '郵箱' 或者 直接issue ,我會(huì)盡快修改
github地址: https://github.com/LuKane/KNPhotoBrower
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iOS Webview自適應(yīng)實(shí)際內(nèi)容高度的4種方法詳解
這篇文章主要介紹了iOS Webview自適應(yīng)實(shí)際內(nèi)容高度的4種方法詳解,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09Objective-C中關(guān)于實(shí)例所占內(nèi)存的大小詳解
這篇文章主要給大家介紹了關(guān)于Objective-C中實(shí)例所占內(nèi)存的大小的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05NSString屬性何時(shí)用strong何時(shí)用copy?
相信各位iOS開(kāi)發(fā)者們都考慮過(guò)這個(gè)問(wèn)題,平時(shí)寫(xiě)NSString的屬性時(shí)都用copy,那strong要何時(shí)用呢?下面這篇文章就來(lái)看一下什么時(shí)候應(yīng)該用copy,什么時(shí)候應(yīng)該用strong。有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-12-12詳解iOS11關(guān)于導(dǎo)航欄問(wèn)題
本篇文章主要介紹了詳解iOS11關(guān)于導(dǎo)航欄問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10iOS實(shí)現(xiàn)APP程序內(nèi)部打開(kāi)APP的AppStore頁(yè)面
這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)APP程序內(nèi)部打開(kāi)APP的AppStore頁(yè)面的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)看看吧。2017-06-06Objective-C的緩存框架EGOCache在iOS App開(kāi)發(fā)中的使用
這篇文章主要介紹了Objective-C的緩存框架EGOCache在iOS App開(kāi)發(fā)中的使用,重點(diǎn)講解了EGOCache對(duì)緩存過(guò)期時(shí)間的檢測(cè)及處理,需要的朋友可以參考下2016-05-05iOS中如何使用iconfont圖標(biāo)實(shí)例詳解
iconfont大家在開(kāi)發(fā)中應(yīng)該會(huì)經(jīng)常用到,下面這篇文章主要給大家介紹了在iOS中如何使用iconfont圖標(biāo)實(shí)例的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07