Xcode7 创建自定义模板

作者: 蝴蝶之梦天使 | 来源:发表于2016-04-20 14:53 被阅读4107次
    自定义模板
    之前编写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

    • 结果


      生成

    成功。

    有啥没说清楚的,给我评论。

    相关文章

      网友评论

      • IMKel:大哥呀,使用你的模板无法创建控制器了
        IMKel:@IMKel 搞定了,路径进错了,跑到mac模板路径下了
        蝴蝶之梦天使:我一直还在用的。 支持最新Xcode的。 你看看,是不是什么地方没有更改好。
      • 王_胖胖:TemplateInfo。plist这个文件不能直接改,必须复制出去改了再替换,这个坑踩了好久
        蝴蝶之梦天使:@王_胖胖 /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates 拷贝到这个目录的任意文件夹中后。
        然后尅直接修改TemplateInfo.plist这个文件。
        王_胖胖:@蝴蝶之梦天使 你说的指定目录是哪个地方?
        蝴蝶之梦天使:复制到指定目录后,可以直接修改的。
      • 缭雾:赞 :+1:
      • 疯狂的小托马斯:xcode 8.2.1 模板能出来,但是创建不了文件?.plist全部按照你所说的, 这个怎么解决?
        ZhangCc_:@蝴蝶之梦天使 可以了,不用回答了
        ZhangCc_:@蝴蝶之梦天使 还是创建不了文件,还能再解释下吗?
        蝴蝶之梦天使:我在Xcode8.3上试了下是可以成功的。 BaseViewController文件名 这个全部替换为你自己定义的。然后使用你自己定义的class作为父类(Subclass of:)。
      • A_SJP:请问楼主,新增的自定义模板,怎么从Xcode的创建窗口中删除呢?
        蝴蝶之梦天使:@A_S123 是不是在某个文件夹下。可以看下是不是自定义了分类。
        A_SJP:@蝴蝶之梦天使
        可是第一次新增的模板,在这个目录下找不到了,之后再新增的就可以删除的,Xcode8,
        蝴蝶之梦天使:@A_S123 在/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates目录下,找到你新增的自定义模板(如BaseVC.xctemplate)直接删除就可以了。
      • 莎___MisU:博主,你好。
        我是用的Xcode 8.1,系统10.12.1。使用文章里面的路径没有改成功,估计是因为8.1创建的文件方式更改了,之后在( /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source/Cocoa Touch Class.xctemplate )这个路径里面添加了BaseViewControllerSwift(我不用OC) 是可以成功的。
        对于TemplateInfo.plist 修改的也是原来存在的plist文件,只是在plist文件中全局搜索到UIViewController之后在它下面添加了BaseViewController字段。
        在Xcode 8.1中可以使用,一切正常。我这么改不会有啥其他问题吧?
        感谢:+1: 博主,这下开发规范总算可以统一,也不会有啥抱怨。
        Catalina諾:说的什么乱七八糟的听不懂
      • 杏仁小核桃:系统的Cocoa Touch Class模板调用不出来是什么问题?比如说创建一个UIViewController的子类,新建的文件都是空的 :sweat:
      • Cooperluffy丨路飞:可以用的,谢谢博主
      • 我是帅帅唐僧:根据模板创建的类它的父类没有,BaseViewController.h file not found,用的git里面的创建的
        Raymonlau:@我是帅帅唐僧 嗯嗯,谢谢,理解那里了,不过有个问题就是我想把uiviewcontroller也添加进去,加了以后提示是提示了但添加不上,没反应,看系统的都是nsviewcontroller,
        我是帅帅唐僧:@Raymonlau 要自己创建一个这样的基类就行了
        Raymonlau:@我是帅帅唐僧 我的也是,请问解决了吗
      • 漫山MASH:这个东西如果多人开发的话需要大家都手动导入一遍吧?
        蝴蝶之梦天使:是的 在每个电脑的Xcode中都要
      • 一切都是幻觉:如果是创建一个自定义分组呢?
        蝴蝶之梦天使:直接在/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates/目录下添加一个文件夹Test,然后在Test文件夹中将*.xctemplate加入。重启Xcode就可以生效了。
      • Ylang:遇到奇怪的问题 流程都是对的,最后创建的时候 就是没有文件出来
        CoderSJun:我也遇到了这个情况 copy进去 重启xcode 生成不出文件 xcode版本是8.1
        Leo里昂:我也遇到了这个情况,不知道是xcode版本问题还是对BaseViewController理解错了,生成不出文件,直接用git的demo也不行 :cold_sweat:
        蝴蝶之梦天使:@Ylang 下载github上的Demo 将Demo的文件copy到你的Xcode中,进行修改。
      • 庸者的救赎:正好用的上

      本文标题:Xcode7 创建自定义模板

      本文链接:https://www.haomeiwen.com/subject/lzizlttx.html