自定义 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


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