Xcode自定义模板

首先说一下需求

在做项目时, 每生成一个控制器都要用#pragma mark -分割所有方法, 这样是为了让相同意义方法模块放在一起, 便于管理与查找, 它是一种代码规范, 而且还可以添加一些每个控制器的都必须要实现的方法, 省时省力..

首先, 我们的公司的控制器内的代码规范如下:

#pragma mark - Import                文件引用

#pragma mark - Macro definition      宏定义

#pragma mark - LifeCycle Method      控制器的声明周期

#pragma mark - Public Methon         公共方法

#pragma mark - CustomDelegate        自定义代理

#pragma mark - UITableViewDataSource  

#pragma mark - UITableViewDelegate

#pragma mark - RequestData Method    数据请求

#pragma mark - Getter Method         get

#pragma mark - Setter Method         set

接下来, 自定义模板的设计

  1. 首先看一下Xcode系统的模板样式

    打开/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/路径

    我们看到有两个文件夹File TemplatesProject Templates 第一个是文件模板, 也是我们常用的, 第二个是项目模板, 感兴趣的可以看看

    打开File Templates, 分四个文件类型的文件夹(如下图),

    Xcode自定义模板_第1张图片
    image

    选择Source->Cocoa Touch Class.xctemplate, 此目录下就是常用的文件模板

    Xcode自定义模板_第2张图片
    image

    本次主要是修改Objective-C语言下的UIViewController (上图红框), 当然你也可以修改swift, xib等等

    打开UIViewControllerObjective-C文件下的___FILEBASENAME___.m文件如下:

    系统定义好的模板

//
//  ___FILENAME___
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//

#import "___FILEBASENAME___.h"

@interface ___FILEBASENAMEASIDENTIFIER___ ()

@end

@implementation ___FILEBASENAMEASIDENTIFIER___

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end 

打开___FILEBASENAME___.h 这个是系统的.h模板

//
//  ___FILENAME___
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//

___IMPORTHEADER_cocoaTouchSubclass___

@interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___

@end

模板中常用宏的意义:

宏的名字 含义
___FILENAME___ 文件名包括后缀
___PROJECTNAME___ 工程名
___FULLUSERNAME___ 用户名字(创建者)
___DATE___ 创建时间
___COPYRIGHT___ 版权
___FILEBASENAME___ 不带后缀的文件名
___FILEBASENAMEASIDENTIFIER___ 不带后缀的文件名
___IMPORTHEADER_cocoaTouchSubclass___ 引入头文件cocoaTouch子集
___VARIABLE_cocoaTouchSubclass___ 所继承的文件名
  1. 接下来就是自定义模板

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/目录下创建Custom Templates/Custom目录, 把File Templates/Scource下的Cocoa Touch Class.xctemplate复制到Custom Templates/Custom 如下图:

    Xcode自定义模板_第3张图片
    image

    修改为:

//
//  ___FILENAME___
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//

#pragma mark - Import

#import "___FILEBASENAME___.h"

#pragma mark - Macro definition


@interface ___FILEBASENAMEASIDENTIFIER___ ()

@end

@implementation ___FILEBASENAMEASIDENTIFIER___

#pragma mark - LifeCycle Method

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    // 埋点 
    [[FunctionUseEngine sharedEngine] insertInfoToDBWithClassName:self eventType:@"page"];
    /*项目需要埋点统计, 所以在此加入每个控制器需要埋点的统计入口*/
}


#pragma mark - Public Methon


#pragma mark - CustomDelegate


#pragma mark - UITableViewDataSource


#pragma mark - UITableViewDelegate


#pragma mark - RequestData Method


#pragma mark - Getter Method


#pragma mark - Setter Method


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

保存/重启xcode, command+n新建文件, 弹框选择新建文件的类型, 选择最后的Custom中Cocoa Touch Class, next选择UIViewController生成文件


最后, 就可以愉快的撸代码了.....(1.每个方法之间要加空行)

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