[干貨分享]讓自己的框架支持cocoapods匯總

這兩天一直琢磨著想讓自己的一個照片多選框架支持cocoapods下載安裝,就搜了好多資料傀广,但是搜到的資料大多都是最基本的颁独,并沒有解決我遇到的問題,問題如下:

  • 當(dāng)自己的框架中用到了xib及圖片資源的話伪冰,怎么解決在cocoapods下載安裝后xib初始化失敗及圖片資源不顯示的問題誓酒。

那么我們從第一步開始,一步一步來使自己的框架支持cocoapods安裝(關(guān)于如何在自己的電腦上安裝cocoapods的贮聂,就請自行搜索靠柑,教程很多)寨辩。

首先概括一個大概的步驟

  • 代碼上傳到github
  • 創(chuàng)建podspec文件
  • 在github上創(chuàng)建release版本
  • 注冊cocoapods賬號
  • 上傳代碼到cocoapods
  • 檢驗是否上傳成功
  • 更新框架版本

重點

  • 解決cocoapods下載框架中xib初始化crash的問題
  • 解決cocoapods下載框架中圖片無法正常顯示的問題

代碼上傳到github

代碼上傳github的步驟就不說了,相信有g(shù)ithub賬號的人幾乎都會上傳歼冰,而且現(xiàn)在代碼上傳github也不需要繁瑣的終端操作了捣染,使用Github Desktop客戶端即可。


Github Desktop

我們還可以觀察到停巷,支持cocoapods的代碼下載下來之后,都會有*.podspec榕栏、LICENSE和.gitignore(該文件為隱藏文件)畔勤,那么先說LICENSE和.gitignore文件,這個可以再github上創(chuàng)建工作目錄時候便勾選出來扒磁,如下圖

creat repository
result

但是通過Github Desktop客戶端推上去的工作目錄是沒有的庆揪,怎么再去創(chuàng)建這兩個文件,筆者暫時沒摸索到妨托,我是直接把這兩個文件copy了一份放到了自己的工作目錄的缸榛。

創(chuàng)建podspec文件

這個簡單,首先你需要打開終端進(jìn)入自己的工作目錄的根目錄兰伤,輸入以下命令

touch name.podspec

name便是你最終確定上傳到cocoapods上的命名
編輯命令如下

vi name.podspec

英文輸入法下内颗,點擊"i"進(jìn)入編輯模式,編輯完畢之后首先點擊"esc"敦腔,然后快捷鍵"shift+zz"(雙擊z鍵)即可
我的ZLPhotoBrowser.podspec文件如下均澳,涉及到更多的cocoapods命令,請自行搜索

ZLPhotoBrowser.podspec

在github上創(chuàng)建release版本

創(chuàng)建release版本

點進(jìn)去之后步驟很簡單找前,填上版本號,標(biāo)題和簡單的描述即可判族,需要注意的是版本號需要與你的 podspec文件中的 s.version 相同

注冊cocoapods賬號

打開終端躺盛,在終端中輸入如下命令

pod trunk register 郵箱地址 '用戶名' --description='描述信息'

然后根據(jù)終端顯示信息,如果成功的話會提示讓你去郵箱里確認(rèn)進(jìn)行激活

輸入如下命令可查看個人cocoapods賬號信息

pod trunk me

上傳代碼到cocoapods

  • 在上傳cocoapods之前你需要做一件事形帮,便是驗證自己的podspec文件格式的有效性槽惫,終端命令如下
pod spec lint

如果podspec文件格式不合法,終端內(nèi)會報出相應(yīng)的提示

如果通過沃缘,終端顯示信息如下


podspec

那么接下來便是把自己的框架推到cocoapods了躯枢,終端命令如下

long:ZLPhotoBrowser long$ pod trunk push ZLPhotoBrowser.podspec --allow-warnings

當(dāng)然你這里如果不是在podspec文件目錄下,也可以指定podspec文件的絕對路徑槐臀,這里請注意最后使用了"--allow-warnings"锄蹂,為忽略警告的意思,如果不加該關(guān)鍵字的話水慨,如果在執(zhí)行"pod spec lint"時候報出了警告得糜,那么這里上傳框架代碼肯定是不成功的敬扛。成功的話,會有如下顯示


push success

檢驗是否上傳成功

終端輸入如下命令搜索你的框架吧

pod search ZLPhotoBrowser

如果成功的話朝抖,終端顯示信息如下


ZLPhotoBrowser

更新框架版本

框架上傳后啥箭,避免不了版本的更新,更新版本也簡單治宣,上傳最新的代碼急侥,在github上創(chuàng)建新的release版本(再次提醒注意版本號與podspec文件的s.version保持一致),然后再次執(zhí)行命令即可

long:ZLPhotoBrowser long$ pod trunk push ZLPhotoBrowser.podspec --allow-warnings

解決cocoapods下載框架中xib初始化crash的問題

由于框架中使用到了UITableView及UICollectionView等UI侮邀,所以有存在對應(yīng)的cell的xib文件坏怪。
我們通過cocoapods去下載我們的框架,如果存在xib绊茧,那么我們平常初始化xib的代碼(如下)便不能正常工作了铝宵。

[[[NSBundle mainBundle] loadNibNamed:@"xibName" owner:self options:nil] lastObject];
[self.collectionView registerNib:[UINib nibWithNibName:@"xibName" bundle:nil] forCellWithReuseIdentifier:@"ZLCollectionCell"];

因為通過mainBundle不能獲取到我們的xib了,解決方法如下

#define kZLPhotoBrowserBundle [NSBundle bundleForClass:[self class]]

[[kZLPhotoBrowserBundle loadNibNamed:@"ZLPhotoActionSheet" owner:self options:nil] lastObject];
[self.collectionView registerNib:[UINib nibWithNibName:@"ZLCollectionCell" bundle:kZLPhotoBrowserBundle] forCellWithReuseIdentifier:@"ZLCollectionCell"];

這樣之后华畏,無論是通過copy文件夾方式還是cocoapods下載安裝的方式鹏秋,都能正常使用xib進(jìn)行初始化了

解決cocoapods下載框架中圖片無法正常顯示的問題

解決完了xib的初始化問題,圖片資源不顯示又是一個令人頭痛的問題亡笑。我在測試期間侣夷,得出如下結(jié)果:

  • 通過cocoapods下載安裝,如果xib中直接填寫好的圖片仑乌,則圖片資源能直接顯示惜纸,如果通過代碼"[UIImage imageNamed:@""]"去設(shè)置的話,則圖片資源根本顯示不了

最終解決方法:

  • 創(chuàng)建bundle資源目錄
command+N -> Resource -> Settings Bundle

刪除bundle攜帶的無用文件绝骚,把圖片資源添加到bundle資源內(nèi)耐版,

  • 改變代碼圖片路徑
// 圖片路徑
#define kZLPhotoBrowserSrcName(file) [@"ZLPhotoBrowser.bundle" stringByAppendingPathComponent:file]
#define kZLPhotoBrowserFrameworkSrcName(file) [@"Frameworks/ZLPhotoBrowser.framework/ZLPhotoBrowser.bundle" stringByAppendingPathComponent:file]
  • kZLPhotoBrowserSrcName(file) 為通過copy文件夾方式獲取圖片路徑的宏
  • kZLPhotoBrowserFrameworkSrcName(file) 為通過cocoapods下載安裝獲取圖片路徑的宏

之后修改代碼中設(shè)置圖片的方式如下

UIImage *img = [UIImage imageNamed:kZLPhotoBrowserSrcName(@"img.png")]?:[UIImage imageNamed:kZLPhotoBrowserFrameworkSrcName(@"img.png")];

到了這一步,ok压汪,很好粪牲,問題已經(jīng)解決。

結(jié)束語

感謝參考的兩篇文章
讓代碼支持CocoaPods
iOS為自己的庫添加CocoaPods支持
同時也感謝下小碼哥(MJ李明杰老師)止剖,解決圖片不顯示的方式是通過查找各大框架的podspec的等相關(guān)才最終在MJRefresh中找到以bundle資源目錄的方式解決的腺阳。

最后發(fā)幾張框架部分功能效果圖

選擇

forceTouch預(yù)覽

編輯視頻功能

編輯圖片功能

橫屏

滑動選擇

拖拽選擇

預(yù)覽網(wǎng)絡(luò)圖片

轉(zhuǎn)載請注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末穿香,一起剝皮案震驚了整個濱河市亭引,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌皮获,老刑警劉巖焙蚓,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡购公,警方通過查閱死者的電腦和手機萌京,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宏浩,“玉大人知残,你說我怎么就攤上這事”茸” “怎么了求妹?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長佳窑。 經(jīng)常有香客問我扒最,道長,這世上最難降的妖魔是什么华嘹? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮法竞,結(jié)果婚禮上耙厚,老公的妹妹穿的比我還像新娘。我一直安慰自己岔霸,他們只是感情好薛躬,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呆细,像睡著了一般型宝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上絮爷,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天趴酣,我揣著相機與錄音,去河邊找鬼坑夯。 笑死岖寞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的柜蜈。 我是一名探鬼主播仗谆,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淑履!你這毒婦竟也來了隶垮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤秘噪,失蹤者是張志新(化名)和其女友劉穎狸吞,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡捷绒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年瑰排,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暖侨。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡椭住,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出字逗,到底是詐尸還是另有隱情京郑,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布葫掉,位于F島的核電站些举,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏俭厚。R本人自食惡果不足惜户魏,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挪挤。 院中可真熱鬧叼丑,春花似錦、人聲如沸扛门。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽论寨。三九已至星立,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葬凳,已是汗流浹背绰垂。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留火焰,地道東北人辕坝。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像荐健,于是被迫代替她去往敵國和親酱畅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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