實(shí)際開發(fā)中,有時(shí)候會有多個(gè)相似app的情況,創(chuàng)建多個(gè)項(xiàng)目當(dāng)然可以,但是還有更好的方案,那就是,多個(gè)app共用一套代碼,通過創(chuàng)建多個(gè)targets來實(shí)現(xiàn)。
一:創(chuàng)建target
1.File->New->Target來新建
2.選中現(xiàn)有target,右鍵duplicate,選擇duplicate only

圖1

圖2
二:修改target名稱
選中target,回車即可改名
三:修改target對應(yīng)scheme名稱
進(jìn)入manage scheme,選中回車即可改名

圖3
四:配置Info.plist
最好修改info.plist的名稱與target一致,這樣以后也好區(qū)分
改名后的info.plist路徑與原來的就不一致,這時(shí),要重新指定其路徑

圖4
五:其他
不同的target可以指定不同的bundle ID,app名稱,包括證書等,當(dāng)然也可以指定不同的資源文件Assets.xcassets
六:不同target間共用資源文件,代碼
選擇要共用的文件,通過勾選要共用的target,來實(shí)現(xiàn)文件共用

圖5
當(dāng)然,創(chuàng)建或者添加的文件也記得要選擇哪些target使用

圖6
七:不同target間差異化
兩種方式:
1.通過不同的代碼文件,資源文件來區(qū)別
這個(gè)就不用多說了
2.同一份文件代碼中,通過變量來區(qū)別
這個(gè)其實(shí)也好理解,就是平常定義變量,那么通過這個(gè)變量來控制不同target的不同表現(xiàn)形式。
不過這里要說的是通過xcode來配置這個(gè)

圖7
注意:一定要有"-D",然后后面是自己定義的宏
那么代碼中就可以使用了
#if app_black
let app_color : UIColor = UIColor.black
#elseif app_orange
let app_color : UIColor = UIColor.orange
#elseif app_blue
let app_color : UIColor = UIColor.blue
#else
let app_color : UIColor = UIColor.black
#endif