iOS开发~自定义Xcode工程模版与文件模版

一、前序

不管你是新手还是老鸟,开发中都要创建项目和创建文件,例如:


创建工程 ->选择模版 ->新建项目



打开工程,新建文件


每次都要这样从一个空项目或者空文件开始,自己总结的一些公用方法都要每一次的拷贝进工程,这样的反反复复做同样的事情对于程序员来说是煎熬的,所以就有了自定义工程模版和自定义文件模版的方法(当然也可以把一些公用类打包成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文件夹,其中实现文件为:

___FILEBASENAME___.h
#pragma mark Constants

#pragma mark - Enumerations


#pragma mark - Class Interface

@interface ___FILEBASENAMEASIDENTIFIER___ : NSObject


#pragma mark - Properties


#pragma mark - Constructors


#pragma mark - Static Methods

+ (___FILEBASENAMEASIDENTIFIER___ *)shared___FILEBASENAMEASIDENTIFIER___;


#pragma mark - Instance Methods


@end


___FILEBASENAME___.m

#import "___FILEBASENAME___.h"

@implementation ___FILEBASENAMEASIDENTIFIER___
+ (id)shared___FILEBASENAMEASIDENTIFIER___ {
    static dispatch_once_t predicate;
    static ___FILEBASENAMEASIDENTIFIER___ *instance = nil;
    dispatch_once(&predicate, ^{instance = [[self alloc] init];});
    return instance;
}
@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

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:Age of Ai 设计师:meimeiellie 返回首页
评论 1

打赏作者

zfpp25_

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值