自定義 Xcode ViewController 類模板
然後 有興趣的可以看看我自己 部落格 ,排版應該稍微好點。
話不多說我們先來體驗下 :
什麼是 Xcode 類模板 ?
說到 Xcode 類模板有些人可能覺得陌生,其實作為一名 iOS 開發,我們每天都會用到 Xcode 類模板,例如建立一個 UIViewController,一個 Category 等等,這些其實都是 Xcode 幫我們整合好的模板。
我們先看看系統的 VC 模版怎麼建立的 :
為什麼要自定義 Xcode 類模板 ?
當我們用 Xcode 自帶的模板建立一個 UIViewController 的子類時,我們會發現 .m
檔案會多出一些方法 :
而我們平時的開發中,或多或少都有自己的一些規範,尤其是在多人合作開發的情況下,一些好的開發規範是相當必要的。
我的 UIViewController 規範:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | #import "MyViewController.h"@interfaceMyViewController()// @end@implementation MyViewController#pragma mark - LifeCyle-(void)viewDidLoad{[superviewDidLoad |
這麼一堆東西寫起來也是要點時間的,如果每建立個 VC 就要寫一遍也太不優雅了。
有沒有什麼辦法能夠在我們建立 VC 的時候自動生成這些呢?
建立自己的 Xcode 類模板
一份成品模版結構大概這樣 :
介紹下里面的東西 (xxx
就是你自定義模版的名字) :
xxx.xctemplate:模版檔案。
xxxObjective-C:OC模版檔案,裡面包含
___FILEBASENAME___.h
和___FILEBASENAME___.m
兩個檔案。xxxXIBObjective-C:比
xxxObjective-C
多了個___FILEBASENAME___.xib
檔案,可自定義。xxxSwift:Swift模版檔案,裡面包含一個
___FILEBASENAME___.swift
檔案。xxxXIBSwift:比
xxxSwift
多了個___FILEBASENAME___.xib
檔案,可自定義。TemplateIcon.png:模版顯示的圖片。
TemplateInfo.plist:模版的配置資訊,
圖7
。
重新寫一份模版太繁瑣,我們直接拷貝一份系統的模版來修改 :
- 拷貝
Cocoa Class.xctemplate
,修改名稱並刪除不需要的檔案。(我這邊是Xcode 8.2.1
, 以後路徑可能有變)
1 | /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source |
- 修改
.h
為 :
123456789101112 | // ___FILENAME___// ___PROJECTNAME___//// Created by ___FULLUSERNAME___ on ___DATE___.//___COPYRIGHT___//___IMPORTHEADER_cocoaSubclass___@interface___FILEBASENAMEASIDENTIFIER___:UIViewController@end |
- 修改
.m
只需要新增自己需要的規範就行,可以參考 上面我的 VC 模板。 - 修改
.swift
為:
1234567891011121314151617181920212223242526272829303132 | // ___FILENAME___// ___PROJECTNAME___//// Created by ___FULLUSERNAME___ on ___DATE___.//___COPYRIGHT___//import UIKitclass___FILEBASENAMEASIDENTIFIER___:UIViewController{//MARK: - LifeCyleoverride func viewDidLoad(){super.viewDidLoad()}deinit{print("\(object_getClassName(self)) - 釋放了!")}//MARK: - Intial Methods//MARK: - Target Methods//MARK: - Private Method//MARK: - Setter Getter Methods//MARK: - External Delegate} |
- 新建
.xib
重新命名___FILEBASENAME___.xib
並按照下圖修改:
上面 .h
.m
裡面 有些詞可能不明白,這裡再稍稍解釋下:
1)DATE:標識當前時間;
2)FILENAME:帶檔案字尾的全名;
3)FILEBASENAME:不帶檔案字尾的名字;
4)FULLUSERNAME:當前的使用者名稱;
6)PROJECTNAME:工程名字;
7)FILEBASENAMEASIDENTIFIER: VC 類名稱;
8)IMPORTHEADER_cocoaSubclass: 匯入的標頭檔案。
TemplateInfo.plist :
講解一些需要改動的東西 :
SortOrder:模版在介面中的位置;
Options:對應
圖2
四行;FallbackHeader:
.h
匯入的標頭檔案;RequiredOptions -> cocoaSubclass:是否支援選擇 xib;
Default
預設true
自動勾選;Values:自定義模版的名稱(一定要保持一致);
Suffixes:模版預設類名,效果如下圖。
最後把建立好的 xxx.xctemplate
檔案直接拷貝到系統路徑下就可以直接使用了:
1 | /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source |
修改系統模板
平常開發中,我們經常用xib
來畫一個View
,之前用系統的模板建立View
的時候是有勾選是否建立對應xib
的這個選項的,蘋果不知道什麼時候改了,現在貌似不行了:
這樣導致我們建立完View
後,還需要再建立個對應的xib
檔案,簡直神煩!
怎麼能自動建立xib
檔案呢?我們完全可以修改系統的模板來滿足我們的剛需:
- 進入目錄,找到
Cocoa Touch Class.xctemplate
檔案
1 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source - 拷貝一份
UIViewObjective-C
檔案並改名為UIViewXIBObjective-C
,然後到其他有xib
的資料夾裡面,拷貝一份xib
到UIViewXIBObjective-C
裡面,xib
可自行修改。(我這裡只配置了Objective-C
的,Swift
步驟類似) - 找到 當前目錄的
TemplateInfo.plist
檔案,如下修改:
- 重新建立系統
View
模板:
大功告成!
Demo
最後放上我自己的一個 懶得自己寫的可以直接用或者在我的模板基礎上修改!