自定義模板
之前編寫iOS代碼編程規范規定了UIViewController.m的文件布局,不同變量和方法的先后順序:,但是在實際使用上,新手根本不按要求編寫代碼,所以想到直接編寫一個模板吧。_
編寫模板簡單的方法就是直接拷貝一個系統的模板,然后進行自定義的修改。我已經修改好了一個https://github.com/yinanwang1/XcodeTemplate.git ,其中有一個BaseVC.xctemplate就是自定義模板的所有文件。
開始嘮叨嘮叨一些細節:
1 模板方案路徑
系統模板的路徑(Xcode7,8,9)/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates在這個目錄下有
模板
其中的Core Data、Other、Resource、Source和User Interface對應著
Xcode中New File菜單
將BaseVC.xctemplate文件夾放到任意系統模板文件夾中,就會在New File時出現在對應的選項中。
把文件copy吧,系統會提醒需要輸入管理員密碼。放心輸入,不然沒法下一步操作。
2. BaseVC.xctemplate介紹
假設已經將BaseVC.xctemplate放入了Source文件夾中,查看BaseVC.xctemplate中有
(1)BaseViewControllerObjective-C 文件夾
用來創建.h 和 .m文件。 其中文件夾的命名規范是[name]+Objective-C. 如果是創建swift修改為swift。
(2)BaseViewControllerXibObjective-C文件夾
用來創建.h,.m和.xib文件。其中文件夾的命名規范是[name]+XibObjective-C. swift類似。
(3)TemplateIcon圖片
圖片是用來顯示在New File的菜單上的。任意放一個自己喜歡的圖片,像素138*138即可。
(4)TemplateInfo.plist
配置文件。下面單獨講講。
3. ___FILEBASENAME___.h
內容為
//
// ___FILENAME___
// ___PROJECTNAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//
#import "___VARIABLE_cocoaTouchSubclass___.h"
@interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___
@end
里面的參數在生成h文件時,系統會替換了輸入的文件名。具體都是什么含義,大家可以自行Google了。
4. ___FILEBASENAME___.m
內容為
//
// ___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
按編程規范編寫的,大家可以自行修改,New File后將自動生成你修改的內容。 有什么異議可以看看iOS代碼編程規范。
5. TemplateInfo.plist
TemplateInfo.plist
- SortOrder 這個是排序的值,可以設置在界面中的擺放位置
-
Options中的Item0,Item1,Item2,Item3 對應了
Options
第一行到第四行。
-
Item0 沒什么可以修改
值得說說
- 自定義的BaseViewController的類,當然可以使用系統或自己定義。
- BaseViewController的后綴。選擇后,自動在Class后面添加ViewController的后綴。
- 是否生成Xib文件,默認是ture。當選擇了BaseViewController時,可以進行checkout,不然不可選,不生成Xib文件。
6. 用一用
-
New File
新建
-
Next
Options.png
命名Test
-
結果
生成
成功。
有啥沒說清楚的,給我評論。