Xcode自定義模板
為何要自定義Xcode模板
有時候公司會要求一定的代碼規范,例如控制器中需要用#pragma mark -來分割各個方法們,像這樣:
#pragma mark - LifeCycle
- (void)dealloc {}
- (void)viewDidLoad {}
- (void)viewWillAppear:(BOOL)animated {}
#pragma mark - UITextFieldDelegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField {}
#pragma mark - Public
#pragma mark - Private
#pragma mark - Getter
- (NSString *)name {}
#pragma mark - Setter
- (void)setName:(NSString *)name {}
這樣不僅可以分割代碼,方便閱讀,而且可以方便找到某個方法:
但是每創建一個類就寫一遍這些是不是有點繁瑣呢,這個時候就要用到Xcode的自定義模板功能了。
修改系統模板樣式
Xcode系統模板的路徑是/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/,文件夾里面有文件模板File Templates和工程模板Project Templates,分別對應創建文件時的選項和創建工程時的選項:
創建文件界面
創建工程界面
我們用的最多就是File Templates/Source/Cocoa Touch Class.xctemplate里面的模板。里面長的是這樣的:
Cocoa Touch Class.xctemplate
例如我們今天需要改UIViewController的模板,就需要改其中的UIViewControllerObjective-C、 UIViewControllerSwift、UIViewControllerXIBObjective-C、UIViewControllerXIBSwift。他們的區別從名字上就能看出來,就是OC與Swift,是否用Xib的區別。
我們以OC并且不用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
是不是很熟悉,就是我們創建一個控制器后.m里面的代碼。其中的一些宏的意義是:
這個文件默認是不讓修改的,我們可以修改他的權限,或者復制一份到別處,修改完替換原文件。總之修改其中的內容為:
//
// ___FILENAME___
// ___PROJECTNAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//
#import "___FILEBASENAME___.h"
@interface ___FILEBASENAMEASIDENTIFIER___ ()
@end
@implementation ___FILEBASENAMEASIDENTIFIER___
#pragma mark - LifeCycle
- (void)viewDidLoad
{
[super viewDidLoad];
}
#pragma mark - UITableViewDelegate
#pragma mark - Public
#pragma mark - Private
#pragma mark - Getter
#pragma mark - Setter
@end
然后把這個文件去替換原來的文件。替換成功后新建一個控制器,就會是我們自定義的結構了,如果沒生效的話,可以重啟下Xcode哦:
新建一個控制器
相信到這里,其他的模板你也一定會改了吧。
使用自定義模板
如果你不想去修改系統的模板,可以在File Templates下新建一個Custom Template文件夾,把系統的Cocoa Touch Class.xctemplate復制進去,然后進行修改就可以了。不會影響系統的默認模板的樣式。
這樣在創建文件的時候,在最下面就會有你自定義的模板選項;
選擇模板
好了,到這里大家應該都熟悉了Xcode模板的基本使用,快去探索更多高級用法吧!
來自:http://www.cocoachina.com/ios/20170419/19087.html