首先说一下需求
在做项目时, 每生成一个控制器都要用#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
接下来, 自定义模板的设计
-
首先看一下Xcode系统的模板样式
打开
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/
路径我们看到有两个文件夹
File Templates
和Project Templates
第一个是文件模板, 也是我们常用的, 第二个是项目模板, 感兴趣的可以看看打开
File Templates
, 分四个文件类型的文件夹(如下图),选择Source->Cocoa Touch Class.xctemplate, 此目录下就是常用的文件模板
本次主要是修改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子集<UIKit/UIKit.h>
|
___VARIABLE_cocoaTouchSubclass___ |
所继承的文件名 |
-
接下来就是自定义模板
在
/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
如下图:修改为:
//
// ___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.每个方法之间要加空行)