iOS 組件化相關(guān)配置

引言

近期開始使用 CocoaPods 組件化開發(fā)項目虾啦,本文記錄個人在創(chuàng)建組件的相關(guān)步驟及一些配置骂删,部分代碼以Swift為主

創(chuàng)建

執(zhí)行 pod lib create LoginKit 創(chuàng)建私有pod
選擇配置模板后會自動打開工程文件

工程配置

由于在pod的開發(fā)模式下以蕴,在修改開發(fā)pod的內(nèi)容后不會立即生效讹堤,需要編輯Scheme
在Build中 添加 該組件



更改完成后編輯pod中相關(guān)組件的文件即可實時生效

配置.podspec

選擇.podspec文件 配置相關(guān)信息梯码,主要配置資源文件宝泵、源文件和第三方依賴

#源文件
  s.source_files = 'OnlinePT-Login/Classes/**/*'
# 資源文件包括 Asset中 .storyboard 文件 和 .xcassets文件 以及子目錄文件
  s.resource_bundles = {
      'LoginKit' => ['LoginKit/Assets/*{.storyboard,.xcassets}','LoginKit/Assets/**/*']
  }
  s.frameworks = 'UIKit'
#依賴 可以為本地開發(fā)中的pod或者第三方
  s.dependency 'BaseCore', '~> 0.0.1'
  s.dependency 'RxSwift'  , '~> 4.5.0'

配置文件目錄

由于pod文件目錄不規(guī)則,可預先配置好文件目錄轩娶,方便后續(xù)在開發(fā)中快速添加文件及子目錄
找到默認文件所在目錄儿奶。


在Classes下創(chuàng)建兩個子目錄 Common,Core ,當然也可以只創(chuàng)建一個鳄抒,根據(jù)自己需求

將原默認文件改個名字,復制到兩個子目錄中闯捎,確保兩個目錄中都有文件

打開終端,cd到Example目錄下许溅,執(zhí)行pod install
可以看到將.podspec中的依賴也添加進了項目中

image.png

重新打開項目瓤鼻,可以看到 Pods -Development Pods - LoginKit 目錄下生成了剛剛添加的 Common 和Core目錄


試著在Common目錄下新建一個.swift文件 可以發(fā)現(xiàn) 該文件自動整理到Common目錄下,當然也可以繼續(xù)新建子目錄贤重,不過要注意的是子目錄必須有文件pod install 時才會添加改目錄

同樣的方法可以添加圖片資源文件


創(chuàng)建Login.xcassets, 隨便添加一張圖片茬祷,然后刪除引用,執(zhí)行 pod install 就會發(fā)現(xiàn)多了一個Resources的引用目錄

多語言也可以照此方法添加并蝗,這樣所有的文件就比較整齊~

配置資源引用

在主工程中也會經(jīng)常使用到組件的相關(guān)資源內(nèi)容祭犯,這里仿照Swift + RxSwift MVVM 模塊化項目實踐一文中添加相關(guān)代碼,用于資源文件的外部引用

import Foundation
/// 本模塊的名稱借卧, 本模塊的storyboard 名稱必須 與模塊名稱相同 ,已經(jīng)用于靜態(tài)資源的加載回用到
let modularName = "LoginKit"

public class LoginKitCore {
    public static var sharedInstance :  LoginKitCore {
        struct Static {
            static let instance :  LoginKitCore =  LoginKitCore()
        }
        return Static.instance
    }
    
    ///供其他模塊使用
    public static var bundle:Bundle?{
        get{
            guard let bundleURL = Bundle(for: LoginKitCore.self).url(forResource: modularName, withExtension: "bundle") else {
                return nil
            }
            guard let bundle = Bundle(url: bundleURL) else {
                return nil
            }
            return bundle
        }
    }
}

若在組件中盹憎,為方便使用 可以添加extension 默認此bundle

參考

下文提供了比較詳細的組件化實踐以及demo,建議參考
Swift + RxSwift MVVM 模塊化項目實踐

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铐刘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子影晓,更是在濱河造成了極大的恐慌镰吵,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挂签,死亡現(xiàn)場離奇詭異疤祭,居然都是意外死亡,警方通過查閱死者的電腦和手機饵婆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門勺馆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事草穆」嘣郑” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵悲柱,是天一觀的道長锋喜。 經(jīng)常有香客問我,道長豌鸡,這世上最難降的妖魔是什么嘿般? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮涯冠,結(jié)果婚禮上炉奴,老公的妹妹穿的比我還像新娘。我一直安慰自己蛇更,他們只是感情好瞻赶,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著械荷,像睡著了一般共耍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吨瞎,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天痹兜,我揣著相機與錄音,去河邊找鬼颤诀。 笑死字旭,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的崖叫。 我是一名探鬼主播遗淳,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼心傀!你這毒婦竟也來了屈暗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤脂男,失蹤者是張志新(化名)和其女友劉穎养叛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宰翅,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡弃甥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了汁讼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淆攻。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡阔墩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瓶珊,到底是詐尸還是另有隱情啸箫,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布艰毒,位于F島的核電站筐高,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏丑瞧。R本人自食惡果不足惜柑土,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绊汹。 院中可真熱鬧稽屏,春花似錦、人聲如沸西乖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽获雕。三九已至薄腻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間届案,已是汗流浹背庵楷。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留楣颠,地道東北人尽纽。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像童漩,于是被迫代替她去往敵國和親弄贿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

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