參考文章:https://www.unicorn-it.de/developing-reusable-views-in-a-swift-framework/
過程要點(diǎn):
1. 選擇Cocoa Touch Framework际跪,所有的內(nèi)容都是繼承swift
2. Reusable View的類已經(jīng)相關(guān)的方法都要public
3. 在打包之前瓦哎,將Build Phase中的header中添加相關(guān)的swift添加public文件
因?yàn)橐婕暗礁谌降腶pp集成咬崔,昨天接到老板的任務(wù)需要嘗試下如何制作可重復(fù)利用的View撵幽,以此不用寫很多重復(fù)的代碼鱼鸠,將一部分可以重復(fù)利用的view或者代碼進(jìn)行framework封裝,因?yàn)楸救艘彩遣锁B和悦,所以摸索了大半天的時(shí)間耙厚,寫下這篇文章也是想記錄一下整個(gè)過程。
本文將采用swift語言來封裝一個(gè)簡單的LoginView仰楚,同時(shí)建立一個(gè)簡單的測試工程來調(diào)用這個(gè)view隆判。
創(chuàng)建Framework工程
創(chuàng)建Cocoa Touch Framework犬庇,語言選擇swift。
為了創(chuàng)建一個(gè)可重復(fù)利用view蜜氨,因?yàn)槲覀儧]有將它放到storyboard里面械筛,而是單獨(dú)制作xib文件,同時(shí)創(chuàng)建對應(yīng)的UIView:
xib和對應(yīng)的swift文件創(chuàng)建完成之后飒炎,需要將loginView xib的File Owner設(shè)置成對應(yīng)的class文件埋哟,這里就是LoginView,如下圖所示郎汪,到這里為止赤赊,我們基本的大框架已經(jīng)搭建完成,接下來就是繪制LoginView xib文件的內(nèi)容煞赢,這里我簡單繪制了一個(gè)Login登陸頁面抛计。
LoginView邏輯處理以及xib頁面繪制
邏輯很簡單,這里我定義了一個(gè)閉包函數(shù)變量照筑,獲得用戶和密碼之后吹截, 如果外部想自定義,則自定義處理結(jié)果凝危,否則采用默認(rèn)的方式波俄,彈出對話框。
public var handleLogin: ((username:String?, password:String?) ->Void)?
打包Framework
在打包之前蛾默,需要一些配合懦铺,目的是為了讓你定義的接口能夠在外部訪問,同時(shí)確保我們定義的class的public訪問的支鸡,一些方法也需要public冬念,如下圖所示:
同時(shí),需要配置build setting:
否則在你的測試工程中會(huì)找不到這個(gè)對應(yīng)的swift類牧挣,build完成之后急前,在debug-iphoesimulator(直接右擊CVFarmework.framework找到對應(yīng)的目錄)的文件中可以拿到該build出來的文件。到這里為止瀑构,我們就可以進(jìn)行測試了裆针。
測試工程的搭建
將build出來的framework工程拷貝到當(dāng)前測試工程目錄下,然后進(jìn)行import检碗,如下,TARGETS->General->Embedded Binaries + 添加進(jìn)來
在測試工程的storyboard中的默認(rèn)viewcontroller中拖入一個(gè)View码邻,然后將這個(gè)view跟framework中的LoginView進(jìn)行綁定折剃,這里需要注意的是在Identity Inspect中填寫class和module,注意通過autolayout添加約束像屋。
測試代碼:
我定義了一個(gè)閉包的函數(shù)怕犁,執(zhí)行獲得用戶名和密碼之后的操作,這里只是簡單的打印信息。
測試結(jié)果:為了看清楚奏甫,我給可重復(fù)利用的view加了一個(gè)橘黃色的背景戈轿。