专注iOS开发Mac使用技巧iOS 开发列车

iOS如何自定义文件/项目模板

2016-04-24  本文已影响2571人  纸简书生

鉴于自己平时写demo比较多,每次都要新建一个项目,然后把一些常用的文件拖到项目中。稍微大一点的项目还需添加预编译文件这些。每次都重复的设置很是无趣。于是决定弄一弄Xcode项目模板,以后可以像创建系统项目一下,创建自定义的项目了。

带目录版纸简书生

来看看最终效果:

自定义模板概述

自定义模板一共有两种类型,一种是自定义项目模板,一种是自定义文件模板。很明显项目模板就是我们在新建项目的时候会用到,而文件模板是在新建文件的时候用到。如果你没有做任何自定义的,那所有的项目及文件都是用的系统模板。

模板路径

系统模板路径

/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/

打开这个路径就会看到有两个文件夹一个是File Templates存储系统文件模板的,一个是Project Templates存储系统项目模板的。

我们自定义的模板不应该放在系统模板下,应该放在~/Library/Developer/Xcode/Templates/。打开目录同样有两个和上面名字一样的文件夹。

TemplateInfo.plist

这个配置文件在每一个具体的模板路径下都会有,它是一个最为基础的配置文件。当我们通过Xcode创建新的文件或者项目的时候,Xcode会首先读取这个文件来配置。每一TemplateInfo.plist都有一个标识用来区别其他模板。所有在我们自定义模板的时候需要给自己的模板取个名字,举个例子,系统为iPhone应用内置的模板标识如下:

com.apple.dt.unit.windowBasedApplication

除了这些,TemplateInfo.plist这个文件还有一点需要我们注意,那就是它可以像类一样实现继承。如下图:

看不懂也没关系,这点不影响我们自定义。只要知道需要用到文件继承来做就可以了。TemplateInfo继承的关系一般也是在自定义项目的时候用到。来看看下面这种图:

0)

左边是自定义的继承层次,右边是系统继承层次。完全按照系统的样子弄就可以了。

TemplateIcon.tiff

这是个图标文件,也就是当我们在xcode新建文件或者项目的时候看到的图标而已。


其他

其他的就是我们自定义文件或者项目的额具体内容了。具体目录如下:

自定义文件模板

自定义文件模板,在实际开发中用到的地方并不是很多。这里也提一提把。比如对于经常写开源项目的同学来说,每次写完正规一点都需要配上相应的开源协议,比如常见的MIT,BSD等。每个文件都手动复制一下如下内容还是挺麻烦的。

// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

所以如果有一个文件模板能够直接在创建文件的时候就自动加上了这些协议那是极好的。

// ___FILENAME___
// 
// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

#import "___FILEBASENAME___.h"

@implementation ___FILEBASENAMEASIDENTIFIER___

@end

TemplateInfo.plist可以通过xcode来创建,也可以直接copy系统模板里面的,我是copy系统模板的,然后改里面的值就可以了。可能有些key不知道什么意思,方法一是看系统模板里面的TemplateInfo.plist设置和我们通过系统模板创建出来的文件作对比来分析具体key的作用,方法二就是去google吧。

自定义项目模板

自定义项目模板才是实际开发中最需要的。相比于自定义文件模板稍微浮躁一点点,因为需要用到TemplateInfo.plist继承关系。

因为系统没有提供创建一个空项目的模板,所以我们就用这个来试一试。

虽然是一个空项目但是还是需要使用前面讲的TemplateInfo.plist继承关系。直接新建一个TemplateInfo.plist文件,或者copy系统模板的然后改一下。

通过这样就可以创建一个空项目了。

来看一个复杂的

光是上面这种例子肯定是最简单的。

文件夹里面的东西和系统目标差不多。

主要看看TemplateInfo.plist里面的配置


大家可以按照这种设置去做自己的自定义。

总结

可能上面讲的对于没有弄过项目模板的同学来说有点难掌握。主要是配置文件里面的key不知道什么意思不知道怎么设置。针对这种情况我建议

更新
昨天没上传例子,这里有个别人写的例子,我就不用上传了。大家自己跟着例子玩玩吧
iOS自定义项目模板例子

上一篇下一篇

猜你喜欢

热点阅读