好久沒來寫文章了,因為生活中有一些瑣事,也因為工作比較忙。今天我們來聊聊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 1 // 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哦:
新建一個控制器
相信到這裡,其他的模板你也一定會改了吧。
使用自定義模板
如果更改系統模板會有問題,就是xcode更新後我們所做的更改就沒有了。
為了解決這個問題,我們可以在~/Library/Developer/Xcode/Templates路徑下新建一個Templates文件夾,再在Templates裡新建一個Custom的文件夾,把系統的Cocoa Touch Class.xctemplate復制進去,然後進行修改就可以了。
這樣在創建文件的時候,在最下面就會有你自定義的模板選項:
選擇模板
好了,到這裡大家應該都熟悉了Xcode模板的基本使用,快去探索更多高級用法吧!
歡迎關注 我 和我的專題:iOS技術交流,查看更多好文章。