一款滿足大多日常開發(fā)的照片選擇框架

先上部分界面截圖一張洋只,gif效果圖請拉至文章末尾查看

preview_with_title.png

前言

ZLPhotoBrowser 原是一款 oc 編寫的框架辆沦,但有一些遺留問題(例如圖片編輯功能不好用、新功能擴展不方便)识虚,以及感覺多余的功能(網絡圖片/視頻的預覽)讓這個框架變的不純粹肢扯,并帶來一些負擔。

所以不在大刀闊斧的對原代碼進行改動担锤,索性從 4.0.0 版本起全部由 Swift 進行重構蔚晨,對原代碼進行優(yōu)化,并刪除一些功能肛循,讓框架成為一個純粹的照片選擇框架铭腕。

功能介紹

你想要的應有盡有,預留給開發(fā)者自定義框架參數(shù)多達50個(沒有的話歡迎提 issue 多糠,功能建議好的話會采納并著手開發(fā))

  • 支持橫豎屏
  • 自選框架樣式
  • 預覽快速選擇(支持拖拽選擇累舷,效果參照QQ)
  • 相冊內部選擇(支持滑動選擇)
  • 圖片/Gif/LivePhoto/Video 混合選擇
  • 自定義最大預覽數(shù)/選擇數(shù)/視頻最大最小可選時長,控制可否選擇原圖
  • 自定義每行顯示列數(shù)
  • 圖片編輯(涂鴉/裁剪/馬賽克)(圖片編輯可編輯多張夹孔;涂鴉顏色可自定義被盈,裁剪工具也可根據(jù)需要自行選擇)
  • 視頻編輯(自定義最大裁剪時長)(效果參照微信視頻編輯)
  • 自定義相機(效果參照微信拍照,點擊拍照析蝴、長按拍攝害捕;上滑調整焦距绿淋;可設置最大錄制時間及視頻分辨率闷畸;可設置閃光燈模式及視頻導出格式;可根據(jù)自己需要控制是否使用自定義相機)
  • 多語言國際化支持(中文簡/繁吞滞,英文佑菩,日文,開發(fā)者可選根據(jù)系統(tǒng)或自己指定裁赠,多語言文案可自定義)
  • 已選擇照片index
  • 已選/不可選 狀態(tài)下mask陰影遮罩
  • 大圖界面下方顯示已選擇照片殿漠,可拖拽排序(可根據(jù)自己需要控制是否顯示)
  • 大圖界面下拉返回
  • 相機內部拍照cell實時顯示相機俘獲畫面
  • 可自定義框架字體
  • 框架各個部位顏色均可自定義(傳入dynamic color即可支持 light/dark mode)
  • 框架內圖片資源可自定義

還有一些原 oc 框架支持的功能暫未遷移,后續(xù)會逐步遷移過來

框架支持

  • iOS 10.0
  • Swift 5.x
  • Xcode 11.x

使用介紹

ZLPhotoConfiguration

該類為框架配置的單例類佩捞,你可以根據(jù)需求對各個參數(shù)進行修改绞幌,每個參數(shù)均有詳細的介紹

ZLPhotoThemeColorDeploy

該類為框架顏色配置類,你可以根據(jù)你們app的UI對各個參數(shù)進行修改

使用示例

  • 快速選擇
let ac = ZLPhotoPreviewSheet()
ac.selectImageBlock = { [weak self] (images, assets, isOriginal) in
    // your code
}
ac.showPreview(animate: true, sender: self)
  • 直接進入相冊選擇
let ac = ZLPhotoPreviewSheet()
ac.selectImageBlock = { [weak self] (images, assets, isOriginal) in
    // your code
}
ac.showPhotoLibrary(sender: self)
  • 調用自定義相機
let camera = ZLCustomCamera()
camera.takeDoneBlock = { [weak self] (image, videoUrl) in
    // your code
}
self.showDetailViewController(camera, sender: nil)
  • 調用編輯圖片
let editVC = ZLEditImageViewController(image: image, tools: [.draw, .clip, .mosaic])
editVC.editFinishBlock = { [weak self] (image) in
    // your code
}
self.showDetailViewController(editVC, sender: nil)
  • 自定義圖片資源
// 與圖片名字保持一致即可
ZLPhotoConfiguration.default().customImageNames = ["zl_btn_selected"]
  • 自定義文案
// 因需要兼容oc調用一忱,swift的struct不支持添加@objc莲蜘,所以暫時只能使用這種方式
ZLPhotoConfiguration.default().customLanguageKeyValue = [ZLLocalLanguageKey.previewCamera.rawValue: "相機"]
  • 支持light/dark mode顏色定義示例
if #available(iOS 13.0, *) {
    ZLPhotoConfiguration.default().themeColorDeploy.thumbnailBgColor = UIColor.init(dynamicProvider: { (trait) -> UIColor in
        if trait.userInterfaceStyle == .dark {
            return .black
        } else {
            return .white
        }
    })
}

需要注意的地方谭确,你需要在你app的 Info.plist 中添加如下鍵值對

//如果不添加該鍵值對,則不支持多語言票渠,相冊名稱默認為英文
Localized resources can be mixed YES
//或者右鍵plist文件Open As->Source Code 添加
CFBundleAllowMixedLocalizations

//相冊使用權限描述
Privacy - Photo Library Usage Description
//相機使用權限描述
Privacy - Camera Usage Description
//麥克風使用權限描述
Privacy - Microphone Usage Description

安裝方法

框架支持 cocoapods / carthage / swift package manage 三種方式進行安裝

  • cocoapods
  1. Podfile 中添加 pod 'ZLPhotoBrowser'
  2. 執(zhí)行 pod install

如果找不到最新版本逐哈,請先執(zhí)行 pod repo update

  • carthage
  1. Cartfile 中添加 github "longitachi/ZLPhotoBrowser" ~> 4.0.0
  2. 執(zhí)行 carthage update ZLPhotoBrowser
  • swift package manager
  1. 選擇 File > Swift Packages > Add Package Dependency,輸入 https://github.com/longitachi/ZLPhotoBrowser.git
  2. 輸入對應版本號(注意SPM最低支持版本為 4.0.1
  3. 待Xcode下載完成點擊確定即可

部分功能Gif效果圖

  • 快速選擇及相冊內部選擇
快速選擇.gif

相冊內部選擇.gif

預覽大圖.gif
  • 編輯圖片问顷,編輯視頻
editImage.gif

editVideo.gif
  • 多語言配置
多語言.gif
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末昂秃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子杜窄,更是在濱河造成了極大的恐慌肠骆,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件塞耕,死亡現(xiàn)場離奇詭異哗戈,居然都是意外死亡,警方通過查閱死者的電腦和手機荷科,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門唯咬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人畏浆,你說我怎么就攤上這事胆胰。” “怎么了刻获?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵蜀涨,是天一觀的道長。 經常有香客問我蝎毡,道長厚柳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任沐兵,我火速辦了婚禮别垮,結果婚禮上,老公的妹妹穿的比我還像新娘扎谎。我一直安慰自己碳想,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布毁靶。 她就那樣靜靜地躺著胧奔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪预吆。 梳的紋絲不亂的頭發(fā)上龙填,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機與錄音,去河邊找鬼岩遗。 笑死胶背,一個胖子當著我的面吹牛,可吹牛的內容都是我干的喘先。 我是一名探鬼主播钳吟,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窘拯!你這毒婦竟也來了红且?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤涤姊,失蹤者是張志新(化名)和其女友劉穎暇番,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體思喊,經...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡壁酬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了恨课。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舆乔。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剂公,靈堂內的尸體忽然破棺而出希俩,到底是詐尸還是另有隱情,我是刑警寧澤纲辽,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布颜武,位于F島的核電站,受9級特大地震影響拖吼,放射性物質發(fā)生泄漏鳞上。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一吊档、第九天 我趴在偏房一處隱蔽的房頂上張望篙议。 院中可真熱鬧,春花似錦籍铁、人聲如沸涡上。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至芋酌,卻和暖如春增显,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工同云, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糖权,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓炸站,卻偏偏與公主長得像星澳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子旱易,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345