iOS自定义Xcode模板

作者: huluo666 | 来源:发表于2016-09-08 17:47 被阅读3104次

    一、为什么要自定义模板

    1.节省重复代码手写时间
    2.统一规范代码,提高代码可读性
    3.减少手写代码,XIB或修改相关配置等不必要的时间

    如我们要求所有的viewController的代码都得按照一下代码结构来写:

    #pragma mark - def
    #pragma mark - override
    #pragma mark - api
    #pragma mark - model event 
    #pragma mark - view event
    #pragma mark - private
    #pragma mark - getter / setter
    

    iOS代码编程规范-根据项目经验汇总

    二、模板存放位置

    Xcode模板主要分为2种,系统默认模板和用户自定模板,对iOS App开发者而言,一般用到的是系统模板中的/Applications/Xcode.app/Contents/Developer/Platforms目录下的iPhoneOS.platform中的模板

    1.png

    1、Xcode系统模板位置

    (1) iOS开发系统模板位置

    • 里面包含文件模板(File Templates)和工程模板(Project Templates)
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates
    

    (2) MacOSX的系统文件模板位置

    /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates
    

    2.用户自定义模板位置
    ~/Library/Developer/Xcode/Templates

    终端命令打开文件目录

    cd ~/Library/Developer/Xcode/Templates //进入目录
    open .                               //打开目前目录
    等价于
    open ~/Library/Developer/Xcode/Templates
    

    或者点击Finder菜单栏的前往>前往文件夹(shift + command + G) ,
    输入:~/Library/Developer/Xcode/Templates

    会看到File TemplatesProject Templates2个文件夹,分别代表文件模板工程模板目录。

    三、如何速创建、修改Xcode模板

    Xcode没有提供直接的工具或者是向导给你创建一个工程模板,,但是我们可以找到Xcode内置的几个模板,这里以iPhone开发为说明,介绍模板的创建修改过程.

    iOS模板目录

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

    终端命令打开方式

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

    或者点击Finder菜单栏的前往>前往文件夹(shift + command + G)

    输入:

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

    1)基于现成模板修改或使用

    拷贝iOS系统模板目录中的模板进行修改。

    为Xcode添加Empty Applicationcategoryprotocol等模板

    现成下载:https://github.com/NSFish/AddMissingTemplates

    https://github.com/ChenYilong/XcodeMissingTemplates

    也可以利用AlcaAtraz安装相关模板,shift+command+9 >Templates模板

    推荐:https://github.com/zubco/PZCustomView

    复制模板文件夹到用户自定义模板目录 ~/Library/Developer/Xcode/Templates/ ,重启即可

    2)完全自定义模板
    例如创建一个带有导航栏和标签栏控制器的工程
    1、进入模板目录
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project\ Templates/iOS

    2、手动创建CustomTemplate文件夹

    3.png

    将原来XCode6中的“Empty Application”模板拷贝过来(可以从上文提到的Github中下载),修改增加一些必要字段。
    Plist文件内容如下图


    2.png

    PS:基于标签栏和导航栏工程模板文件相关内容详见文末Github
    相关字段含义查阅3.1

    使用CustomTemplate中的nav模板创建后如下:


    x5.png x6.png

    你也可以根据plist文件根据自己需要添加更多的文件,比如配置文件、工具类,基础类等,这样每次创建工程的时候就不需要写相关代码了,也不必手动拖进一些文件到工程里,达到一劳永逸的效果.

    3.1 Xcode模板 文件宏

    占位符 意义
    ___FILENAME___ 文件名包括后缀
    ___PROJECTNAME___ 当前工程名,在创建工程时设置的
    ___FULLUSERNAME___ 当前登录用户的名字
    ___DATE___ 当前日期 ,格式为MM/DD/YY
    ___FILEBASENAMEASIDENTIFIER___ 不带后缀的文件名
    ___projectnameasidentifier___ 项目名称转换为有效的C风格的标识符
    ___organizationname___ 在Xcode项目定义的组织名称
    ___time___ 当前时间
    ___year___ 前四位数的年份

    From:http://see.sl088.com/wiki/Xcode%E6%A8%A1%E6%9D%BF_%E6%96%87%E4%BB%B6%E5%AE%8F

    3.2文件组成
    --TemplateInfo.plist(必要):所有的模板属性设置都在这里。
    --TemplateIcon.tiff(可选):定义显示在new project的dialog中的模板图标。
    -- Main_iPhone.storyboard、Main_iPad.storyboard:要添加在项目中的文件。

    3.3TemplateInfo.plist字段详解

    • Kind(必须) 模板类型
      Xcode.Xcode3.ProjectTemplateUnitKind --指定该模板是工程(项目)模板
      Xcode.IDEFoundation.TextSubstitutionFileTemplateKind --指定该模板是文件模板
    • SortOrder 这个是排序的值,该模板显示在new project的dialog中的位置索引,可以设置在界面中的摆放位置,值越小越前面
    • Ancestors:要继承的模板。也就是模板的“父类”,从父类那里继承一些模板的基础属性,可以有多个父类。
    • Concrete:设置为YES的模板才可以显示在new project的dialog中,此时这个模板不能被其他模板继承。
    • Description:就是Description描述信息。
    • Identifier:模板的唯一标示符,若模板B要继承模板A,就在模板B的Ancestors中写上模板A的Identifier。
    • Nodes:定义要添加到项目中的文件,目标结构节点。
    • Definitions:将Nodes中定义的文件添加到项目中(相关.h/.m文件)。
    • Options:定义在new project中选择模板后点击next后的dialog中的内容,如Product Name、Organization Name、Company Identifier、Bundle Identifier等。
    • 在Suffixes里面添加自定义的模板类的类名以及模板类所继承的类名

    文件模板

    至于文件模板,可以拷贝系统默认模板到文件模板目录根据以上释义进行修改,也可以根据自己喜好直接修改系统模板,修改很简单,你就放肆的修改吧,一般不会出现什么问题,即使出现问题,大不了重装下Xcode啦,这样每次创建相应文件就可以自动添加相应的代码了,这样别人代码编写速度再快,也赶不上你的速度,简单而实用。

    四、其它应用实例

    iOS开发网络适配https,修改模板方式解决
    iOS9让所有的HTTP默认使用了HTTPS,App无法正常访问HTTP链接。
    1、常规解决方法
    iOS9 HTTP 不能正常使用的解决办法
    2、Xcode模板修改步骤
    步骤1、:进入工程模板目录或直接打开编辑

    open  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project\ Templates/iOS/Application/Cocoa\ Touch\ Application\ Base.xctemplate/TemplateInfo.plist
    

    编辑Cocoa Touch Application Base.xctemplate/TemplateInfo.plist文件

    步骤2、添加key&value值

    • 在Nodes中增加一个item, 值(右侧)设置为Info.plist:NSAppTransportSecurity 。

    • 在Definitions字段下增加item, 键(左侧)设置为Info.plist:NSAppTransportSecurity ,值(右侧)设置为

      <key>NSAppTransportSecurity</key>
      <dict>
      <key>NSAllowsArbitraryLoads</key>
      <true/>
      </dict>
      
    4.png

    注意第4点,里面内容不仅仅是所见的NSAppTransportSecurity,包含以上字典所有内容

    Github CustomTemplate

    下载安装:
    打开/ios文件目录,将UITbaBar&Nav.xctemplate模板放置在CustomTemplate目录,如上图3.png所示

    open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project\ Templates/iOS/Application/Cocoa\ Touch\ Application\ Base.xctemplate/TemplateInfo.plist
    

    当然你也可以直接使用以下工具进行一键拷贝


    XCode模板克隆工具

    使用方法简介:(以CustomTemplate为例)
    1、输入模板git地址
    2、点击“下载”
    3、选择菜单“工程模板”
    4、点击“一键拷贝”

    然后新建工程即可看到模板:


    image.png

    下载地址
    Github 自定义示例模板下载

    模板下载克隆工具 文件大小: 95kb

    相关文章

      网友评论

      • 27c0f9020912:楼主,创建后的工程,默认提供的group(比如Resource)是不和本地的文件夹绑定的?请问能配置修改吗?不然的话,如果模板中提供group的很多,那岂不是要一一手动改过来?
      • 8372dc21a48f:SortOrder 写错了,值越小越前面
        huluo666:@jackrex68 嗯,谢谢纠正,已修改
      • Mr卿:😄
      • Mr卿:我神,研究过集成cocoapods得模板没有呀
        Mr卿:@huluo666 将podfile这个文件也➕进去然后还是要手动操作呀 pod install ?
        Mr卿:@huluo666 将podfile这个文件也➕进去然后还是要手动操作呀 pod install ?
        huluo666:@薇薇卿 一样的,创建podfile文件然后手动安装
      • 10399e6c5b35:学习了

      本文标题:iOS自定义Xcode模板

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