續(xù)上一篇 framework--多架構(gòu)(Multi-Architecture)編譯
1、問題?
iOS的一個限制,framework只能包含頭文件和靜態(tài)庫癞谒。那么怎么樣通過使用bundle整合資源,讓其可以隨著framework一起發(fā)布刃榨。
2弹砚、解決方法:
2.1、創(chuàng)建一個Bundle
資源都會被添加到bundle中枢希。這將是A工程上的另一個目標桌吃。
1)
2)
3)因為要創(chuàng)建一個在iOS上使用的bundle,這與默認的OS X不同苞轿。選擇RWUIControlsResources目標茅诱,然后點擊Build Settings欄,搜索base sdk搬卒,選擇Base SDK這一行瑟俭,按下delete鍵,這一步將OS X切換為iOS契邀。
4)將工程名稱改為A摆寄。搜索product name,雙擊進入編輯模式,將${TARGET_NAME}替換為A椭迎。
5)默認情況下锐帜,有兩種resolutions的圖片可以產(chǎn)生一些有趣的現(xiàn)象。例如畜号,當你導入一個retina @2x版本的圖片時,普通版的和Retina版的將會合并成一個多resolution的TIFF(標簽圖像文件格式允瞧,Tagged Image File Format)简软。這不是一件好事。搜索hidpi將COMBINE_HIDPI_IMAGES設置為NO述暂。
6)確保當你編譯framework時痹升,bundle也能被編譯并將framework作為依賴添加到集體目標中。選中Framework目標畦韭,選擇Build Phases欄疼蛾,展開Target Dependencies面板,點擊 + 按鈕艺配,選擇AResources目標將其添加為依賴察郁。
7)在Framework目標的Build Phases中,打開MultiPlatform Build面板转唉,在腳本的最后添加下述代碼:
//這條指令將拷貝構(gòu)建好的bundle到用戶的桌面上
# Copy the resources bundle to the user's desktop
ditto "${BUILT_PRODUCTS_DIR}/${RW_FRAMEWORK_NAME}.bundle" \
"${HOME}/Desktop/${RW_FRAMEWORK_NAME}.bundle"
8)編譯framework scheme皮钠,你會發(fā)現(xiàn)bundle在桌面上出現(xiàn)
2.2、導入Bundle
為了用這個新的bundle開發(fā)赠法,你需要在示例項目中使用它麦轰,這意味著你必須既把它作為依賴添加到工程中,同時作為一個對象拷貝到項目中砖织。
2.3款侵、創(chuàng)建一個絲帶視圖(Ribbon View)
1)從之前下載的壓縮文件中將RWRibbon文件夾拖入到B工程下A組中。
2)代碼中一個很重要的部分是你怎樣引用一張圖片侧纯。如果你看一下RWRibbonView.m文件中的addRibbonView方法新锈,你將會看到相關(guān)的這一行代碼:
//Bundle就像一個文件目錄,所以引用bundle中的一張圖片是非常簡單的茂蚓。
UIImage *image = [UIImage imageNamed:@"A.bundle/RWRibbon"];
3)將圖片添加到bundle中
4)導出頭文件RWRibbon.h壕鹉,確保在framework中可以被訪問
5)將頭文件引用添加到framework的頭文件中。打開A.h添加下面這兩行:
// RWRibbon
#import < RWUIControls/RWRibbonView.h>
2.4聋涨、將絲帶添加到示例工程中
1)在B項目中打開RWViewController.m文件晾浴,在@interface后的大括號中添加下面的實例變量聲明。
RWRibbonView *_ribbonView;
2)在viewDidLoad:的末尾添加下面的代碼來創(chuàng)建一個絲帶視圖:
// Creates a sample ribbon view
_ribbonView = [[RWRibbonView alloc] initWithFrame:self.ribbonViewContainer.bounds];
[self.ribbonViewContainer addSubview:_ribbonView];
// Need to check that it actually works :)
UIView *sampleView = [[UIView alloc] initWithFrame:_ribbonView.bounds];
sampleView.backgroundColor = [UIColor lightGrayColor];
[_ribbonView addSubview:sampleView];
3)編譯并運行B scheme牍白。你將看到新的絲帶控件出現(xiàn)在應用的下方脊凰。