我們做項目的時候,可能會將項目中其中一個小模塊抽出來,分裝成一個framework使用气忠,里面不僅會有.h、.m文件赋咽,可能還會有xib以及圖片音頻等資源旧噪。
現(xiàn)在我們做一下這方面的教程。
1脓匿、首先淘钟,我們創(chuàng)建一個Framework的項目,選擇Framework & Library里面的Cocoa Touch Framework陪毡。項目名就叫:Dog米母。
2、我們在Dog項目中導(dǎo)入一個Animals的實(shí)體文件夾毡琉,里面還有controllers铁瞒、views、models3個實(shí)體文件桅滋,這一步主要用于模擬現(xiàn)實(shí)項目中的文件所在的復(fù)雜路徑精拟。
3、加載xib文件虱歪。
在controllers文件夾中新建文件DogViewController(包含xib文件),并在xib文件中加入一個標(biāo)題為“小狗的叫聲是”的button栅表,并實(shí)現(xiàn)其點(diǎn)擊事件笋鄙。
然后再新建一個DogVoiceViewController(不帶xib)以及DogVoiceView(帶xib)文件。
重點(diǎn):
我們要在DogVoiceViewController中顯示DogVoiceView的xib文件中的東西怪瓶。
因?yàn)槲覀冏罱K會形成framework的形式萧落,讓別的應(yīng)用使用,所以不能使用[NSBundle mainBundle]來獲取xib的路徑洗贰,要使用[NSBundle bundleForClass:[DogVoiceView class]]獲取xib的路徑找岖。如圖:
最后,我們讓點(diǎn)擊“小狗叫聲是”按鈕的時候跳轉(zhuǎn)到DogVoiceViewController頁面敛滋。
4许布、加載資源文件。
我們再新建一個存放圖片的Bundle绎晃,command+N蜜唾,選擇Resource里面的settings Bundle杂曲。命名為images.Bundle。
新建成功之后袁余,我們將Bundle里面的默認(rèn)文件和文件夾都刪除擎勘。然后添加一張圖片進(jìn)行備用。
我們在DogViewController.xib文件中載入一個UIImageView颖榜,用于顯示圖片棚饵。
注意:圖片也需要特殊的bundle路徑。如圖:
圖片名稱要用相對路徑:images.bundle/IMG_0165
5掩完、設(shè)置公開的.h文件
在Dog.h文件中添加需要公開的文件頭部噪漾。
在TARGETS -> Build Phases -> Headers 將DogViewController.h從Project移到Public中。
最后運(yùn)行Dog項目獲得Dog.framework文件藤为。(注意怪与,在真機(jī)上運(yùn)行的到的dog.framework文件只能在真機(jī)上使用;在模擬器運(yùn)行的文件只能在模擬器上使用缅疟;如果想要同時在真機(jī)和模擬器上使用的話分别,需要合并真機(jī)和模擬器的Dog.framework文件。)
測試Dog.framework是否可用:
1存淫、創(chuàng)建測試項目DogTest耘斩。
2、將Dog.framework文件引入DogTest工程桅咆。
3括授、在DogTest工程的Targets -> General -> Embedded Binaries 引入framework。
4岩饼、在Build Phases -> Copy Bundle Resources 引入framework.
5荚虚、調(diào)用framework里面的文件。
應(yīng)用頭文件:#import<Dog/Dog.h>
調(diào)用framework里面的xib文件時籍茧,需要特定的bundle路徑版述。如圖:
運(yùn)行結(jié)果:
OK,F(xiàn)ramework的創(chuàng)建以及其中xib文件和圖片資源的引用就到這里了寞冯,再見渴析!