之前編寫iOS代碼編程規(guī)范規(guī)定了UIViewController.m的文件布局,不同變量和方法的先后順序:梨撞,但是在實(shí)際使用上政模,新手根本不按要求編寫代碼,所以想到直接編寫一個模板吧。_
編寫模板簡單的方法就是直接拷貝一個系統(tǒng)的模板译柏,然后進(jìn)行自定義的修改置蜀。我已經(jīng)修改好了一個https://github.com/yinanwang1/XcodeTemplate.git ,其中有一個BaseVC.xctemplate就是自定義模板的所有文件奈搜。
開始嘮叨嘮叨一些細(xì)節(jié):
1 模板方案路徑
系統(tǒng)模板的路徑(Xcode7,8盯荤,9)/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates在這個目錄下有
其中的Core Data馋吗、Other、Resource廷雅、Source和User Interface對應(yīng)著
將BaseVC.xctemplate文件夾放到任意系統(tǒng)模板文件夾中耗美,就會在New File時出現(xiàn)在對應(yīng)的選項中。
把文件copy吧航缀,系統(tǒng)會提醒需要輸入管理員密碼商架。放心輸入,不然沒法下一步操作芥玉。
2. BaseVC.xctemplate介紹
假設(shè)已經(jīng)將BaseVC.xctemplate放入了Source文件夾中蛇摸,查看BaseVC.xctemplate中有
(1)BaseViewControllerObjective-C 文件夾
用來創(chuàng)建.h 和 .m文件。 其中文件夾的命名規(guī)范是[name]+Objective-C. 如果是創(chuàng)建swift修改為swift灿巧。
(2)BaseViewControllerXibObjective-C文件夾
用來創(chuàng)建.h赶袄,.m和.xib文件。其中文件夾的命名規(guī)范是[name]+XibObjective-C. swift類似抠藕。
(3)TemplateIcon圖片
圖片是用來顯示在New File的菜單上的饿肺。任意放一個自己喜歡的圖片,像素138*138即可盾似。
(4)TemplateInfo.plist
配置文件敬辣。下面單獨(dú)講講。
3. ___FILEBASENAME___.h
內(nèi)容為
//
// ___FILENAME___
// ___PROJECTNAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//
#import "___VARIABLE_cocoaTouchSubclass___.h"
@interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___
@end
里面的參數(shù)在生成h文件時零院,系統(tǒng)會替換了輸入的文件名溉跃。具體都是什么含義,大家可以自行Google了告抄。
4. ___FILEBASENAME___.m
內(nèi)容為
//
// ___FILENAME___
// ___PROJECTNAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//
#import "___FILEBASENAME___.h"
// Controllers
// Model
// Views
//#define <#macro#> <#value#>
@interface ___FILEBASENAMEASIDENTIFIER___ ()
//@property (nonatomic, strong) <#type#> *<#name#>
@end
@implementation ___FILEBASENAMEASIDENTIFIER___
#pragma mark - View Controller LifeCyle
- (instancetype)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self initialNavigationBar];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
[[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"];
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
#pragma mark - Override
#pragma mark - Initial Methods
- (void)initialNavigationBar
{
// self.navigationItem.title = <#title#>;
}
#pragma mark - Target Methods
#pragma mark - Notification Methods
#pragma mark - KVO Methods
#pragma mark - UITableViewDelegate, UITableViewDataSource
#pragma mark - Privater Methods
#pragma mark - Setter Getter Methods
@end
按編程規(guī)范編寫的撰茎,大家可以自行修改,New File后將自動生成你修改的內(nèi)容打洼。 有什么異議可以看看iOS代碼編程規(guī)范龄糊。
5. TemplateInfo.plist
- SortOrder 這個是排序的值逆粹,可以設(shè)置在界面中的擺放位置
-
Options中的Item0,Item1绎签,Item2枯饿,Item3 對應(yīng)了
第一行到第四行。
-
Item0 沒什么可以修改
- 自定義的BaseViewController的類诡必,當(dāng)然可以使用系統(tǒng)或自己定義奢方。
- BaseViewController的后綴。選擇后爸舒,自動在Class后面添加ViewController的后綴蟋字。
- 是否生成Xib文件,默認(rèn)是ture扭勉。當(dāng)選擇了BaseViewController時鹊奖,可以進(jìn)行checkout,不然不可選涂炎,不生成Xib文件忠聚。
6. 用一用
-
New File
-
Next
命名Test
-
結(jié)果
成功。
有啥沒說清楚的唱捣,給我評論两蟀。