自定义Xcode Template

有时候,我们需要对一些类的代码做一些约定的规范,比如VC的一些#pragma mark,我们希望能将各个功能的代码都能放到对应的mark下;在定义好规范之后,有些工作是需要手动去完成的(一般都是复制粘贴),其实我们可以创建出自定义的模版,然后集成到Xcode中,这样创建出来的类就默认包含了我们定义的规范的内容。

创建

  1. 获取系统提供的模版,目录如下

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates

  1. 拷贝系统的模版加以定制
    比如:现在需要定制UIViewController类的模版,该类的模版在Cocoa Touch Class.xctemplate目录下,找到UIViewControllerObjective-C文件夹,拷贝出来修改


    自定义Xcode Template_第1张图片
    图片.png
自定义Xcode Template_第2张图片
图片.png

编辑.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

注意:TemplateInfo.plist文件也需要拷贝出来,该文件描述了创建时的配置信息

安装

只需要将定制的模版的文件夹,整个复制到下面的目录下,如果没有目录就创建一个

~/Library/Developer/Xcode/Templates/File Templates/

复制的过程可以手动或者写脚本

  1. 手动:将模版拷贝到~/Library/Developer/Xcode/Templates/File Templates/

    自定义Xcode Template_第3张图片
    图片.png

  2. 脚本:install-template.sh

#!/usr/bin/env sh

SOURCE_DIR=$(dirname "$0")
TEMPLATES_DIR="$HOME/Library/Developer/Xcode/Templates"
FILE_TEMPLATES_DIR="$TEMPLATES_DIR/File Templates"
CUSTOM_TEMPLATES_DIR="$FILE_TEMPLATES_DIR/Custom"

echo "Installing templates to $CUSTOM_TEMPLATES_DIR"
mkdir -p "$CUSTOM_TEMPLATES_DIR"
cp -R "$SOURCE_DIR/Custom.xctemplate" "$CUSTOM_TEMPLATES_DIR"
echo "Finished"

将脚本放在你的xxx.xctemplate的同级目录,然后执行./install-template.sh;注意要用xxx.xctemplate替换脚本中的Custom.xctemplate

使用

  • 安装成功之后,重启Xcode就可以在新建File的时候看到我们的模版了


    自定义Xcode Template_第4张图片
    图片.png
  • 例如创建VC
    自定义Xcode Template_第5张图片
    图片.png
  • 创建成功之后,效果如下

#import "TemplateTestViewController.h"

@interface TemplateTestViewController ()

@end

@implementation TemplateTestViewController

#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

结语

这里举了个例子讲VC的规范通过定制模版来减少人工的拷贝粘贴,后续其他的一些规范都可以通过定制模版的方式来处理

你可能感兴趣的:(自定义Xcode Template)