自定义模版统一代码规范,减少重复代码书写。
Xcode的系统模版路径
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates
模版配置文件
1.pngSupportsSwiftPackage:是否支持Swift
包。
Kind:项目模板为Xcode.Xcode3.ProjectTemplateUnitKind
,文件模板为Xcode.IDEFoundation.TextSubstitutionFileTemplateKind
。
Description:
Summary:
SortOrder:在模板面板中排序的优先级。
DefaultCompletionName:
Platforms:标识该模板适用的平台。
com.apple.platform.iphoneos
com.apple.platform.iphoneos
com.apple.platform.watchos
com.apple.platform.appletvos
Options:Options
是一个集合,配置创建模板的面板相关属性,如名称,类型,选项卡,选项约束等。
- identifier:模板选项的唯一标识,我们在模板文件中可以通过宏来引用它的值。也就是说它也用来保存模板选项的值。例如系统
Viewcontroller
模板文件中引用创建模板时开发者设定的基类名使用了:___VARIABLE_cocoaTouchSubclass___
这里的___VARIABLE_XXXXXX___
也是宏,紧跟着的cocoaTouchSubclass
是第二个option
的identifier
的值。 - Required:是否必须。
- Type:选项类型。
ViewController
中类型为text
(手动输入),基类为class
(类选取),创建XIB
为checkbox
(勾选框),语言选取为popup
(弹框)。 - Values:某类值的集合。这个值跟当前选项具体内容有关,最直观的就是语言选项中的
Values
就是用户可以选择的两种开发语言Objective-C
与Swift
。 - Default:选项默认值。这个跟选项类型有关,例如
checkbox
类型的创建XIB选项默认创建,其值就为false
,语言选择是必选的,其默认值就为Objective-C
。 - RequiredOptions:必要选项,字面是这个意思,从
XIB
选项中可以看出,这个字段是与checkbox
配合的,当基类出现指定的值时,勾选框就可选。
模板常用的占位宏
___PROJECTNAME___:工程名
___FILENAME___:包含后缀的文件名
___FILEBASENAME___ : 文件名
___FILEBASENAMEASIDENTIFIER___ :不包含后缀的c格式文件名
___VARIABLE_cocoaTouchSubclass___:继承的父类名字
___FULLUSERNAME___:用户名
___ORGANIZATIONNAME___:公司名
___COPYRIGHT___:版权说明
___DATE___:当前日期
___TIME___:当前时间
___YEAR___:当前年
___FILEHEADER___:默认类的头文件
更多宏可查看官方文档在此
自定义模版
iOS文件夹下新建Custom
文件夹存放自定义模版。拷贝一份Source
文件夹内Cocoa Touch Class.xctemplate
文件存放至Custom
文件夹(也可根据需要拷贝Cocoa Touch Class.xctemplate
文件夹中的部分文件,但必须包含TemplateIcon-1016.png
、TemplateIcon-1016@2x.png
、TemplateInfo.plist
文件)。修改拷贝至Custom
文件夹的Cocoa Touch Class.xctemplate
文件夹名称方便区分。根据需要配置TemplateInfo.plist
文件。
单文件
2.png 3.png修改CustomViewControllerObjective-C内文件
.h
___IMPORTHEADER_cocoaTouchSubclass___
@interface ___FILEBASENAMEASIDENTIFIER___ :
___VARIABLE_cocoaTouchSubclass___
@end
.m
//___FILEHEADER___
#import "___FILEBASENAME___.h"
@interface ___FILEBASENAMEASIDENTIFIER___ ()
@end
@implementation ___FILEBASENAMEASIDENTIFIER___
#pragma mark - LifeCycle
- (void)dealloc {
#if DEBUG
NSLog(@"%s", __FUNCTION__);
#endif
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self setupUI];
}
#pragma mark - Public Methods
#pragma mark - Actions
#pragma mark - Delegate
#pragma mark - Http && DB
#pragma mark - Private Methods
- (void)setupUI {
self.title = @"";
}
#pragma mark - Getter && Setter
@end
关联配置中的自定义名称
4.png自定义一个
ID
,之后再模版中拼接宏
// 负责人:(___VARIABLE_customID___)
效果
5.png 6.png关联多个文件
要获取模块的名称需要用到的是___FILEBASENAME___
。这里要特别注意的是,__FILEBASENAME__
是options
中的 productName
选项派生的,所以,要使用这个宏,就不能更改 productName
,否则宏无法关联到我们输入的名称,其默认将会使用 DefaultCompletionName
字段的值。
———————参考文档———————
[iOS]自定义文件模板(.xctemplate)
自定义Xcode Template
在 Xcode 中自定义快捷模板(Template)
Xcode 代码块、类文件模板
网友评论