還在用UIImagePickerController? ——iOS相冊(cè)選擇器

之前寫過(guò)一個(gè)相冊(cè)選擇器昨忆,但是特別的簡(jiǎn)陋(手動(dòng)滑稽)丁频。所以。邑贴。就決定了寫一個(gè)好一點(diǎn)的相冊(cè)選擇器席里,就是MSTImagePickerController啦。

先上圖:

這個(gè)相冊(cè)長(zhǎng)這樣

首先拢驾,在這里說(shuō)奖磁。因?yàn)檫€是小白,所以這個(gè)相冊(cè)還是有許多不盡如人意的地方繁疤,以后會(huì)多加改正的咖为,希望大家多多支持~~

優(yōu)勢(shì)

  • 根據(jù)時(shí)間進(jìn)行分組(年、月稠腊、日)
  • 可識(shí)別已選擇過(guò)的照片
  • 可以返回 LivePhoto
  • 根據(jù)主題類型顯示
  • 自定義進(jìn)入方式
  • 還有許多的自定義屬性~

簡(jiǎn)單介紹

言歸正傳躁染,這個(gè)相冊(cè)使用的 framework 是 PHPhotos。也就是說(shuō)架忌,只支持iOS8以上的系統(tǒng)吞彤。

MSTImagePickerController(以下簡(jiǎn)稱 MSTPicker )一共有三中進(jìn)入的方式:

  1. 進(jìn)入相冊(cè)選擇界面。(演示的第一種情況)
  2. 直接進(jìn)入相機(jī)膠卷,并且可以返回到相冊(cè)選擇界面饰恕。(演示的第二種情況)
  3. 還有一種情況就是直接進(jìn)入相機(jī)膠卷挠羔,不能返回相冊(cè)選擇界面。


    就是這三種方式

相冊(cè)讀取代碼沒(méi)什么好說(shuō)的埋嵌,基本上都差不多:


讀取『相機(jī)膠卷』
可以看到里面的紅字部分:
  1. 第一個(gè)(creationDate)是根據(jù)創(chuàng)建時(shí)間來(lái)進(jìn)行升序或降序的排列褥赊。
  2. 第二個(gè)(mediaType == %d),這個(gè)是用來(lái)過(guò)濾掉不希望讀取的類型莉恼。這里是為了只顯示圖片。

相冊(cè)讀取完了速那,肯定就到了讀取相冊(cè)中每個(gè)圖片的具體信息了:


讀取預(yù)覽圖片

在預(yù)覽的時(shí)候俐银,我只是將圖片按照當(dāng)前設(shè)備屏幕大小來(lái)進(jìn)行讀取,這樣是為了減少內(nèi)存的使用端仰。并且在滑動(dòng)的時(shí)候捶惜,只會(huì)加載模糊圖片,只有定位到某一張圖片的時(shí)候才會(huì)加載清晰圖片荔烧,在上面的 GIF 中可以看到吱七。

MSTPicker可以根據(jù)圖片的創(chuàng)建時(shí)間進(jìn)行分類,有三個(gè)檔:年鹤竭、月踊餐、日。


分類

MSTPicker在需要分類的情況下臀稚,有一個(gè)不夠完善的地方吝岭,之后會(huì)說(shuō)到。

MSTPicker 是有照相和錄像功能的吧寺,但是在已經(jīng)勾選了圖片的情況下窜管,是無(wú)法錄像的。同樣的稚机,在勾選了圖片的情況下幕帆,也是無(wú)法選定已經(jīng)有的視頻的。

監(jiān)聽(tīng)系統(tǒng)相冊(cè)變化赖条,就是在系統(tǒng)相冊(cè)增刪改的時(shí)候失乾,會(huì)收到一個(gè)通知,從而在縮略圖界面有相應(yīng)的改變谋币,這個(gè)方法比較長(zhǎng):

系統(tǒng)相冊(cè)監(jiān)聽(tīng)

這個(gè)是根據(jù)官方文檔中的示例代碼進(jìn)行改進(jìn)的仗扬。這里要感謝一下 stackOverflow上 的 batkru 同學(xué)關(guān)于在監(jiān)聽(tīng)方法中試圖移除相同的 indexPath 的崩潰問(wèn)題的解答±俣睿灰常感謝T绨拧!诅蝶!

MSTPicker 也是可以選定和展示 Live Photo 的退个,因?yàn)槟M器的緣故募壕,就沒(méi)在這里展示,具體可以看一下源代碼语盈。

MSTPicker 的返回是通過(guò)代理協(xié)議返回的舱馅,并且視頻和圖片是分開返回的。視頻返回 URL刀荒,圖片和 Live Photo 返回的數(shù)組:


MSTImagePickerControllerDelegate

在剩下的代嗤,我個(gè)人覺(jué)得就是界面的勾勾畫畫了,也就不在這里贅述了缠借,想要看得童鞋可以看一下 MSTPicker 的 Github:https://github.com/immustard/MSTImagePickerController

等待改進(jìn)

因?yàn)?MSTPicker 還是第一版干毅,所以有很多地方需要改進(jìn)和加強(qiáng),下面來(lái)列舉一些:

  1. 根據(jù)已經(jīng)選定的圖片重新打開 MSTPicker泼返,并且選定的圖片標(biāo)記硝逢。

  2. 縮略圖界面相機(jī)圖標(biāo)動(dòng)態(tài)顯示

  3. 自定義相機(jī)界面。

  4. 自定義視頻展示界面绅喉。

  5. 選擇 GIF 圖渠鸽。

  6. 可以拍照按鈕放在外部。

  7. 增加最小的可以選定的圖片尺寸柴罐。

  8. 攝像頭徽缚、麥克風(fēng)授權(quán)返回。

  9. 剩下的在代碼中有所標(biāo)注丽蝎。

還有一點(diǎn)最重要的猎拨,也是我最希望改進(jìn)的就是圖片的壓縮問(wèn)題。尤其是原圖屠阻,舉個(gè)??:在系統(tǒng)相冊(cè)中讀取出原圖的 imageData 的大小為1.9M红省,但是轉(zhuǎn)換為 UIImage 的時(shí)候,大小就暴漲到 7.9M 国觉,有哪位大神幫小弟解釋一下么吧恃。。麻诀。

感謝

因?yàn)楸救耸莻€(gè)小白痕寓,所以很多東西都是在摸索中前進(jìn)的,特此感謝一下給予我?guī)椭奈恼潞痛笊瘢?/p>

還有許多沒(méi)有記錄下來(lái)文章(其實(shí)是蝇闭,實(shí)在不知道原作者是誰(shuí)了)呻率。

拿本記一下!呻引!這里要重點(diǎn)感謝一下 TZImagePickerController 這個(gè)開源庫(kù)給了很多很多的幫助礼仗,當(dāng)然了,不是抄襲。在 TZImagePickerController 的基礎(chǔ)上元践,MSTPicker 有了很多的改進(jìn)韭脊。非常非常非常感謝!5ヅ浴沪羔!

最后

最后希望各位大神可以給出指導(dǎo)意見(jiàn),這是本人的第一個(gè)github代碼象浑,我希望可以進(jìn)行不斷的完善蔫饰,多謝多謝。愉豺。

再次奉上 Github 地址:https://github.com/immustard/MSTImagePickerController

多謝大家支持死嗦!


最近才看到,代碼上有人反饋的問(wèn)題粒氧,真是尷尬。节腐。(好像兩個(gè)多月了都)
不過(guò)還好解決了外盯,順帶解決了點(diǎn)擊選中按鈕時(shí)只有iOS9之后才能添加動(dòng)畫的問(wèn)題。
最近還想著給這個(gè)相冊(cè)添加一些新的東西翼雀,因?yàn)橹鞍l(fā)現(xiàn)微信的相冊(cè)的功能變得更強(qiáng)大了饱苟。

再次最后

希望大家多多提意見(jiàn)!謝謝~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狼渊,一起剝皮案震驚了整個(gè)濱河市箱熬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌狈邑,老刑警劉巖城须,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異米苹,居然都是意外死亡糕伐,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門蘸嘶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)良瞧,“玉大人,你說(shuō)我怎么就攤上這事训唱∪祢牵” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵况增,是天一觀的道長(zhǎng)赞庶。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么尘执? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任舍哄,我火速辦了婚禮,結(jié)果婚禮上誊锭,老公的妹妹穿的比我還像新娘表悬。我一直安慰自己,他們只是感情好丧靡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布蟆沫。 她就那樣靜靜地躺著,像睡著了一般温治。 火紅的嫁衣襯著肌膚如雪饭庞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天熬荆,我揣著相機(jī)與錄音舟山,去河邊找鬼。 笑死卤恳,一個(gè)胖子當(dāng)著我的面吹牛累盗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播突琳,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼若债,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了拆融?” 一聲冷哼從身側(cè)響起蠢琳,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎镜豹,沒(méi)想到半個(gè)月后傲须,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趟脂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年躏碳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片散怖。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡菇绵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镇眷,到底是詐尸還是另有隱情咬最,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布欠动,位于F島的核電站永乌,受9級(jí)特大地震影響惑申,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜翅雏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一圈驼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧望几,春花似錦绩脆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至楼誓,卻和暖如春玉锌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疟羹。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工主守, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人榄融。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓丸逸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親剃袍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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