自定義 Xcode 工程模版與文件模版


原文地址:http://blog.csdn.net/lizhongfu2013/article/details/27672749


一、前序

不管你是新手還是老鳥,開發中都要創建項目和創建文件,例如:


創建工程 ->選擇模版 ->新建項目



打開工程,新建文件


每次都要這樣從一個空項目或者空文件開始,自己總結的一些公用方法都要每一次的拷貝進工程,這樣的反反覆覆做同樣的事情對於程序員來說是煎熬的,所以就有了自定義工程模版和自定義文件模版的方法(當然也可以把一些公用類打包成framework,但這樣解決了文件模版的問題,還沒有解決工程模版的問題),下面開始吧!


二、主要內容

1、Xcode中模版的那些事

2、自定義工程模版(Project Templates)

3、自定義文件模版(File Templates)


三、開始吧

1、每次新建項目,都可以選擇工程類型,例如Single View Application、Empty Application等,這些都是Xcode預先定義好的模版,路徑在 /Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/ 下的Project Templates文佳中

每次新建文件,例如新建一個Objective-C class,這也是使用Xcode中已經定義好了的文件模版,在與工程模版同級別目錄下的File Templates文件夾下。



當然,我們自定義的模版要放在Xcode提供的另一個路徑中:~/Library/Developer/Xcode/Templates

注意:自定義模版有一套通用規則,但由於Xcode升級頻繁,所以自定義模版的寫法也會相應的改變,深入的去學習原理可能要花費點時間,所以這裏僅僅是以Xcode5爲例,用最快的方式實現模版,並投入到實際使用中。


2、自定義工程模版(Project Templates

如果從頭構建一個工程模版,那是很麻煩的,不過有便捷的方法,就是改系統模版:

到系統模版目錄下(Project Templates -> Application),拷貝Single View Application.xctemplate文件夾到自定義模版目錄,但目前自定義模版文件夾(Templates)中沒有ProjectTemplates文件夾,不過我們可以自己創建一個,然後模擬系統模版目錄結構,再Project Templates文件夾中新建Application文件夾,並把Single View Application.xctemplate放到Application文件夾中,並改名爲DemoApplication.xctemplate


當前自定義模版目錄如圖:



打開Demo Application.xctemplate文件夾,可以看到文件夾中有4個文件:


TemplateInfo.plist 屬性模板屬性設置

TemplateIcon.tiff 新建項目時候模版圖標(可以不添加)

Main_iPhone.storyboard、Main_iPad.storyboard:模版中使用。


其中TemplateInfo.plist是模版的屬性文件,每個模版都一個自己唯一標識,打開TemplateInfo.plist,修改key值Identifier對應的Value爲com.apple.dt.unit.DemoApplication,然後保存:



這樣重新打開Xcode,新建項目,發現我們自定義(改裝Single View模版)的工程模版了:



已經成功一半了,但不要忘記我們自定義工程模版的目的是什麼。下一步,給工程模版中添加我們自己總結的一些常用公用類,這樣便於以後新建工程的時候,不再需要手動的拷貝大量文件到新建的工程:

下面以 iOS開發~設備信息 提到的@interface UIDevice (Info)類別作爲模版的文件爲例說明具體如何操作:

1)在自定義模版Demo Application.xctemplate文件夾中,新建UIDeviceInfo文件夾,把UIDevice+Info.h 及 UIDevice+Info.m放入UIDeviceInfo文件夾中

2)配置TemplateInfo.plist


添加系統庫:TemplateInfo.plist添加一個新的Row



然後打開Xcode,新建項目,模版選擇Demo Application,效果如圖:



注意:TemplateInfo.plist其他配置補充

1)Ancestors:父模版,從父模版那裏繼承一些模板的基礎屬性,可以有多個父類。

系統模版Empty Application.xctemplate:


2)Concrete:設置爲YES的模板纔可以顯示在new projectdialog中,此時這個模板不能被其他模板繼承。

3)Definitions:將Nodes中定義的文件添加到項目中。

4)Description:新建工程時,模版的描述

5)Identifier:模板的唯一標示符。

6)Kind:項目模板爲Xcode.Xcode3.ProjectTemplateUnitKind,所有工程模版都是這個值

7)Nodes:定義添加到工程模版中的文件

8)Options:定義新建工程中的storyboard等。

工程模版到這裏已經基本的介紹完了。



3、自定義文件模版(File Templates

文件模版相對比工程模版更加複雜一些,但幸好有開源代碼可以作爲參考,下載代碼解壓後如圖:



在Xcode的自定義模版文件夾中,創建一個新的文件夾LK File Templates(名字隨便),將開源代碼中的文件夾拷貝到LK File Templates文件夾中:



在一個工程中,新建文件:



自定義文件模版被加載了,但完全用別人的東西,感覺還是理解的不夠,所以自己改改!拿Objective-C Singleton做實驗了:

1)首先按照開源代碼默認的模版定義,新建一個文件,看看效果:



選擇next:



這裏的True Singleton選項的含義還要看一看模版文件內容:



然後next創建單例文件,如果創建文件時候勾選True Sigleton,就會選用TrueSingleton文件夾中的文件模版,如入股不勾選True Sigleton,就會使用Default中的文件模版。


但現在GCD方式創建模版更簡潔,於是折騰下,添加GCD單例實現方式:

1、刪除TrueSingleton文件夾

2、增加GCDSingleton文件夾,其中實現文件爲:

[objc] view plain copy
  1. ___FILEBASENAME___.h  
[objc] view plain copy
  1. #pragma mark Constants  
  2.   
  3. #pragma mark - Enumerations  
  4.   
  5.   
  6. #pragma mark - Class Interface  
  7.   
  8. @interface ___FILEBASENAMEASIDENTIFIER___ : NSObject  
  9.   
  10.   
  11. #pragma mark - Properties  
  12.   
  13.   
  14. #pragma mark - Constructors  
  15.   
  16.   
  17. #pragma mark - Static Methods  
  18.   
  19. + (___FILEBASENAMEASIDENTIFIER___ *)shared___FILEBASENAMEASIDENTIFIER___;  
  20.   
  21.   
  22. #pragma mark - Instance Methods  
  23.   
  24.   
  25. @end  


[objc] view plain copy
  1. ___FILEBASENAME___.m  

[objc] view plain copy
  1. #import "___FILEBASENAME___.h"  
  2.   
  3. @implementation ___FILEBASENAMEASIDENTIFIER___  
  4. + (id)shared___FILEBASENAMEASIDENTIFIER___ {  
  5.     static dispatch_once_t predicate;  
  6.     static ___FILEBASENAMEASIDENTIFIER___ *instance = nil;  
  7.     dispatch_once(&predicate, ^{instance = [[self alloc] init];});  
  8.     return instance;  
  9. }  
  10. @end  


修改 TemplateInfo.plist 

修改前:


修改後:




保存文件後,打開項目,新建文件:



成功了:



查看模版代碼:




更多的發揮就靠每個人的想象能力了!

項目模版文件在我的CSDN資源分享中,如果有必要,可以下載“Xcode自定義模版”查看代碼。

Demo下載:http://download.csdn.net/detail/zfpp25_/7426759


參考資料:

http://www.bobmccune.com/2012/03/04/creating-custom-xcode-4-file-templates/

http://stackoverflow.com/questions/8205381/odd-xcode-behavior-when-creating-classes

http://www.iliunian.com/2862.html

http://www.th7.cn/Program/IOS/201312/162518.shtml

https://github.com/reidmain/Xcode-5-File-Templates


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章