Xcode ViewController 類模板

Xcode 類模板.gif

Xcode 類模板

例如創建一個 UIViewController,一個 Category 等等,這些其實都是 Xcode 幫我們集成好的模板。

自定義 Xcode 類模板

當我們用 Xcode 自帶的模板創建一個 UIViewController 的子類時,我們會發現 .m 文件會多出一些方法

默認方法.jpeg

而我們平時的開發中,或多或少都有自己的一些規范,尤其是在多人合作開發的情況下,一些好的開發規范是相當必要的。

參考UIViewController規范:

#import "MyViewController.h"
 
@interface MyViewController ()
//
 
@end
 
@implementation MyViewController
 
#pragma mark - LifeCyle
- (void)viewDidLoad {
    [super viewDidLoad];
}
/*
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
}
 
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
}
 
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
}
 
-(void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
}
*/
- (void)dealloc {
    NSLog(@"%@-釋放了",self.class);
}
 
#pragma mark - Intial Methods
 
#pragma mark - Target Methods
 
#pragma mark - Private Method
 
#pragma mark - Setter Getter Methods
 
#pragma mark - External Delegate
 
#pragma mark - UITableViewDelegate,UITableViewDataSource
/*
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return <#NSInteger#>;
}
 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return <#NSInteger#>;
}
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    return <#UITableViewCell#>;
}
 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return <#CGFloat#>;
}
**/
@end

創建自己的 Xcode 類模板

模版結構大概這樣:

模版結構.jpeg

介紹下里面的東西(xxx 就是你自定義模版的名字):

  • xxx.xctemplate模版文件。
  • xxxObjective-COC模版文件,里面包含___FILEBASENAME___.h___FILEBASENAME___.m
  • xxxXIBObjective-CxxxObjective-C多了個___FILEBASENAME___.xib文件,可自定義。
  • xxxSwiftSwift模版文件,里面包含一個___FILEBASENAME___.swift文件。
  • xxxXIBSwiftxxxSwift多了個___FILEBASENAME___.xib文件,可自定義。
  • TemplateIcon.png模版顯示的圖片。
  • TemplateInfo.plist模版的配置信息。

  • 拷貝 Cocoa Class.xctemplate,修改名稱并刪除不需要的文件。

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source

  • 修改 .h 為
//  ___FILENAME___
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//  ___COPYRIGHT___
//
 
___IMPORTHEADER_cocoaSubclass___
 
@interface ___FILEBASENAMEASIDENTIFIER___ : UIViewController
 
@end
  • 修改.m只需要添加自己需要的規范就行,可以參考VC模板。
  1. DATE標識當前時間;
  1. FILENAME帶文件后綴的全名;
  1. FILEBASENAME不帶文件后綴的名字;
  1. FULLUSERNAME當前的用戶名;
  1. PROJECTNAME工程名字;
  1. FILEBASENAMEASIDENTIFIER``VC類名稱;
  1. IMPORTHEADER_cocoaSubclass導入的頭文件。
  • 修改.swift為:
//  ___FILENAME___
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//  ___COPYRIGHT___
//
 
import UIKit
 
class ___FILEBASENAMEASIDENTIFIER___: UIViewController {
 
// MARK: - LifeCyle
 
override 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并按照下圖修改:
xib重命名.jpeg
  • TemplateInfo.plist
TemplateInfo.jpeg

SortOrder模版在界面中的位置;

Options對應上圖選中;

FallbackHeader``.h導入的頭文件;

RequiredOptions -> cocoaSubclass是否支持選擇xib``Default默認true自動勾選;

Values自定義模版的名稱(一定要保持一致);

Suffixes模版默認類名,效果如下圖。

Suffixes.gif

最后把創建好的xxx.xctemplate文件直接拷貝到系統路徑下就可以直接使用了

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source

修改系統模板

創建完View后,自動創建xib文件

  • 進入目錄,找到Cocoa Touch Class.xctemplate文件

/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文件,如下修改:

edit_TemplateInfo.jpeg
  • 重新創建系統View模板就可以選擇xib

Demo

參考鏈接

自定義 Xcode ViewController 類模板

Xcode7 創建自定義模板

Creating Custom Xcode 4 File Templates

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容