iOS仿微信圖片選擇器络凿,適配iOS6-9系統(tǒng)荞彼,3行代碼即可集成

原文地址:http://www.codeceo.com/article/ios-weixin-image-picker.html

前段時間空余時間比較多冈敛,打算嘗試做一個圖片選擇器出來,仔細對比了很多自定義了圖片選擇器的應用卿泽,感覺最喜歡微信的界面效果,當然微博的功能更強大滋觉,還支持了LivePhoto签夭,所以打算模仿微信的界面效果,瞄著微博的功能去做一個圖片選擇器出來椎侠。

一.? TZImagePickerController簡介

這個圖片選擇器還沒達到我理想中的效果第租,但是最近工作開始忙起來了,所以有一些功能放在以后加入吧我纪。目前這個圖片選擇器:

(1)支持圖片多選慎宾、選原圖和視頻;

(2)支持預覽圖片和視頻浅悉;

(3)適配了iOS6~9趟据;

總體上跟微信的照片選擇器界面和功能都差不多一樣,當然我這個弱不少…效果圖如下:

1. TZPhotoPickerController术健,照片選擇控制器

2.TZPhotoPreviewController汹碱,照片預覽控制器

3.TZVideoPlayerController,視頻預覽控制器

對照片選擇器要求不是很高的應用來說荞估,這個圖片選擇器還算是夠用了咳促,這段時間考察了github上若干個支持多選的圖片選擇器,界面效果和功能都比這個差些勘伺,可能是有更好的我沒發(fā)現(xiàn)吧…

二.? 如何集成

該圖片選擇器支持 CocoaPods 跪腹, 在你的 Podfile 文件中加入 ?pod ‘TZImagePickerController’, ‘~> 1.0.0′ 即可集成。

如果你喜歡手動導入飞醉,到github下載代碼后冲茸,將TZImagePickerController文件夾拖入到你的項目中,再 #import “TZImagePickerController.h” 即可缅帘。

集成這個圖片選擇器噪裕,最少只需要三行代碼,用起來還是很方便股毫,可以節(jié)省開發(fā)者的時間膳音,把更多的時間和精力花在業(yè)務邏輯和自己想鉆研的技術(shù)點上去。

TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:9delegate:self];// You can get the photos by block, the same as by delegate.// 你可以通過block或者代理铃诬,來得到用戶選擇的照片.[imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray *photos,NSArray*assets) {? ? }];? ? [selfpresentViewController:imagePickerVc animated:YEScompletion:nil];

代碼截圖如下 :

三. 相關類的介紹

1. TZImageManager

:唯一import了和的類祭陷,向外界提供有獲取相冊/照片/視頻資源的接口苍凛,在里面每個方法內(nèi)部會判斷系統(tǒng)版本,從而選擇是從

AssetsLibrary庫「iOS9以前可用」 還是從 Photos庫 里獲取照片資源「iOS8以后可用」兵志。

2. TZImagePickerController

:導航欄控制器醇蝴,通過改變該控制器的一些屬性來達到你想要的效果,比如設置maxImagesCount屬性來約束用戶最大可選圖片張數(shù)想罕,默認為9張悠栓;設置allowPickingOriginalPhoto屬性為NO不允許用戶選擇視頻,默認是YES按价;設置allowPickingVideo屬性為NO不允許用戶選擇原圖惭适,默認是YES。

3. TZPhotoPickerController :照片選擇控制器楼镐,一個collectionView每行4個cell展示圖片癞志。

4. TZPhotoPreviewController :照片預覽控制器,用的是collectionView而不是scrollView框产,所以不用處理重用邏輯凄杯,然而圖片的間隙我還沒弄出來…以后再弄吧…

5. TZVideoPlayerController :視頻預覽控制器,簡單的播放/暫停/發(fā)送視頻功能秉宿,用的是AVPlayer來播放戒突。進度條下次有空再加上吧…

6. TZAssetModel :裝有 一個 圖片/視頻/音頻資源的模型,對應一個圖片/視頻Cell「 TZAssetCell 」描睦,資源屬性名為asset 妖谴,可以從 TZImageManager 取出資源對象「圖片/視頻/音頻」。

7. TZAlbumModel :裝有 一個 相冊資源的模型酌摇,對應一個相冊Cell「 TZAlbumCell 」膝舅,資源屬性名為result,可以從 TZImageManager 取出所含有的圖片資源數(shù)組窑多。

四. 微信圖片選擇器的一些技術(shù)點

優(yōu)點實在太多了仍稀,說兩個我發(fā)現(xiàn)的小缺點吧。

小缺點1:在相冊列表頁埂息,空的cell也會顯示技潘,出現(xiàn)許多空的分割線∏Э担「也可能是微信的產(chǎn)品或iOS喜歡這個調(diào)調(diào)…」

我的解決方案:加上這一句 _tableView.tableFooterView = [[UIView alloc] init]; 會不再顯示空的cell享幽。當然也可以隱藏系統(tǒng)的分割線,自己加一個高0.5~1像素的View作為分割線拾弃。

小缺點2:在照片選擇器頁值桩,微信的設計是不允許同時選擇視頻和照片的,但是在照片預覽頁面豪椿,用戶卻可以同時選中視頻和照片奔坟,此時微信會默認將視頻作為圖片發(fā)送携栋,而沒有做一個提示。并且咳秉,如果用戶選擇了發(fā)送原圖婉支,此時視頻雖然也被選中出來了,但是會一直發(fā)送失敗澜建。

我的解決方案:在照片預覽頁面向挖,如果用戶在選擇了圖片的情況下又選擇了視頻,提示用戶會默認將視頻做圖片發(fā)送炕舵。并且在圖片瀏覽器頁面何之,如果預覽到了一個視頻,則將原圖按鈕隱藏幕侠,在計算原圖大小的方法里也會過濾掉視頻資源帝美。

當然微信的圖片選擇器是很優(yōu)秀的碍彭,比如我今天在用iOS6系統(tǒng)的4s真機測試時晤硕,發(fā)現(xiàn)第一次彈出圖片選擇器時,如果相機膠卷相冊圖片數(shù)大于1000庇忌,我的這個會有比較明顯的卡頓舞箍,而微信的卻依然流暢…考慮到這個罕見的iOS6系統(tǒng)4s機子不是我的、工作要開始忙了皆疹、畢竟這只是4s等原因疏橄,這個優(yōu)化就等下次有空再來研究吧…

更具體的信息大家感興趣的話去看代碼吧,如果發(fā)現(xiàn)了bug請?zhí)嵋粋€issue略就,當然最好你給順便解決了并提一個pull request捎迫,這樣最帥了對吧…

代碼地址:https://github.com/banchichen/TZImagePickerController

歡迎使用,覺得不錯請給一個小小的star鼓勵一下~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末表牢,一起剝皮案震驚了整個濱河市晋辆,隨后出現(xiàn)的幾起案子喘漏,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件习寸,死亡現(xiàn)場離奇詭異,居然都是意外死亡射赛,警方通過查閱死者的電腦和手機副签,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堰燎,“玉大人掏父,你說我怎么就攤上這事「鸭簦” “怎么了损同?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵翩腐,是天一觀的道長。 經(jīng)常有香客問我膏燃,道長茂卦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任组哩,我火速辦了婚禮等龙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伶贰。我一直安慰自己蛛砰,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布黍衙。 她就那樣靜靜地躺著泥畅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪琅翻。 梳的紋絲不亂的頭發(fā)上位仁,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音方椎,去河邊找鬼聂抢。 笑死,一個胖子當著我的面吹牛棠众,可吹牛的內(nèi)容都是我干的琳疏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼闸拿,長吁一口氣:“原來是場噩夢啊……” “哼空盼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起新荤,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤揽趾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后迟隅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體但骨,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年智袭,在試婚紗的時候發(fā)現(xiàn)自己被綠了奔缠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡吼野,死狀恐怖校哎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤闷哆,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布腰奋,位于F島的核電站,受9級特大地震影響抱怔,放射性物質(zhì)發(fā)生泄漏劣坊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一屈留、第九天 我趴在偏房一處隱蔽的房頂上張望局冰。 院中可真熱鬧,春花似錦灌危、人聲如沸康二。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沫勿。三九已至,卻和暖如春味混,著一層夾襖步出監(jiān)牢的瞬間产雹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工惜傲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洽故,地道東北人贝攒。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓盗誊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親隘弊。 傳聞我的和親對象是個殘疾皇子哈踱,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容