Xcode7 創建自定義模板

自定義模板

之前編寫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 沒什么可以修改


    值得說說
  1. 自定義的BaseViewController的類,當然可以使用系統或自己定義。
  2. BaseViewController的后綴。選擇后,自動在Class后面添加ViewController的后綴。
  3. 是否生成Xib文件,默認是ture。當選擇了BaseViewController時,可以進行checkout,不然不可選,不生成Xib文件。

6. 用一用

  1. New File


    新建
  • Next


    Options.png

    命名Test

  • 結果


    生成

成功。

有啥沒說清楚的,給我評論。

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

推薦閱讀更多精彩內容

  • 最近寫項目的時候用到了很多UIViewController的子類,所以自定義了個模板希望能快速創建一個規范且...
    CharlsPrince閱讀 952評論 0 1
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • 寫之前先感謝下 @ColeXm 的 偷懶寶典--打造屬于自己的 Xcode 類模板 讓我知道能夠知道還能自定義 X...
    ifelseboyxx閱讀 7,319評論 14 73
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,349評論 25 708
  • 一、為什么要自定義模板 1.節省重復代碼手寫時間2.統一規范代碼,提高代碼可讀性3.減少手寫代碼,XIB或修改相關...
    huluo666閱讀 7,992評論 10 49