美文网首页
iOS 自定义模版

iOS 自定义模版

作者: FieryDragon | 来源:发表于2022-12-17 19:26 被阅读0次

    自定义模版统一代码规范,减少重复代码书写。

    Xcode的系统模版路径

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

    1.png

    模版配置文件

    1.png

    SupportsSwiftPackage:是否支持Swift包。
    Kind:项目模板为Xcode.Xcode3.ProjectTemplateUnitKind,文件模板为Xcode.IDEFoundation.TextSubstitutionFileTemplateKind
    Description
    Summary
    SortOrder:在模板面板中排序的优先级。
    DefaultCompletionName

    Platforms:标识该模板适用的平台。
    com.apple.platform.iphoneos
    com.apple.platform.iphoneos
    com.apple.platform.watchos
    com.apple.platform.appletvos

    OptionsOptions 是一个集合,配置创建模板的面板相关属性,如名称,类型,选项卡,选项约束等。

    • identifier:模板选项的唯一标识,我们在模板文件中可以通过宏来引用它的值。也就是说它也用来保存模板选项的值。例如系统 Viewcontroller 模板文件中引用创建模板时开发者设定的基类名使用了:___VARIABLE_cocoaTouchSubclass___
      这里的 ___VARIABLE_XXXXXX___ 也是宏,紧跟着的 cocoaTouchSubclass 是第二个 optionidentifier 的值。
    • Required:是否必须。
    • Type:选项类型。ViewController 中类型为text(手动输入),基类为class(类选取),创建XIBcheckbox(勾选框),语言选取为popup(弹框)。
    • Values:某类值的集合。这个值跟当前选项具体内容有关,最直观的就是语言选项中的Values就是用户可以选择的两种开发语言Objective-CSwift
    • Default:选项默认值。这个跟选项类型有关,例如 checkbox 类型的创建XIB选项默认创建,其值就为false,语言选择是必选的,其默认值就为Objective-C
    • RequiredOptions:必要选项,字面是这个意思,从XIB选项中可以看出,这个字段是与checkbox 配合的,当基类出现指定的值时,勾选框就可选。

    模板常用的占位宏

    ___PROJECTNAME___:工程名
    ___FILENAME___:包含后缀的文件名
    ___FILEBASENAME___ : 文件名
    ___FILEBASENAMEASIDENTIFIER___ :不包含后缀的c格式文件名
    ___VARIABLE_cocoaTouchSubclass___:继承的父类名字
    ___FULLUSERNAME___:用户名
    ___ORGANIZATIONNAME___:公司名
    ___COPYRIGHT___:版权说明
    ___DATE___:当前日期
    ___TIME___:当前时间
    ___YEAR___:当前年
    ___FILEHEADER___:默认类的头文件
    

    更多宏可查看官方文档在此

    自定义模版

    iOS文件夹下新建Custom文件夹存放自定义模版。拷贝一份Source文件夹内Cocoa Touch Class.xctemplate文件存放至Custom文件夹(也可根据需要拷贝Cocoa Touch Class.xctemplate文件夹中的部分文件,但必须包含TemplateIcon-1016.pngTemplateIcon-1016@2x.pngTemplateInfo.plist文件)。修改拷贝至Custom文件夹的Cocoa Touch Class.xctemplate文件夹名称方便区分。根据需要配置TemplateInfo.plist文件。

    单文件

    2.png 3.png
    修改CustomViewControllerObjective-C内文件

    .h

    ___IMPORTHEADER_cocoaTouchSubclass___
    
    @interface ___FILEBASENAMEASIDENTIFIER___ : 
    ___VARIABLE_cocoaTouchSubclass___
    
    @end
    

    .m

    //___FILEHEADER___
    
    #import "___FILEBASENAME___.h"
    
    @interface ___FILEBASENAMEASIDENTIFIER___ ()
    
    @end
    
    @implementation ___FILEBASENAMEASIDENTIFIER___
    
    #pragma mark - LifeCycle
    
    - (void)dealloc {
    #if DEBUG
        NSLog(@"%s", __FUNCTION__);
    #endif
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        [self setupUI];
    }
    
    #pragma mark - Public Methods
    
    #pragma mark - Actions
    
    #pragma mark - Delegate
    
    #pragma mark - Http && DB
    
    #pragma mark - Private Methods
    
    - (void)setupUI {
        self.title = @"";
    }
    
    #pragma mark - Getter && Setter
    
    @end
    

    关联配置中的自定义名称

    4.png
    自定义一个ID,之后再模版中拼接宏
    //  负责人:(___VARIABLE_customID___)
    
    效果
    5.png 6.png

    关联多个文件

    要获取模块的名称需要用到的是___FILEBASENAME___。这里要特别注意的是,__FILEBASENAME__options中的 productName 选项派生的,所以,要使用这个宏,就不能更改 productName,否则宏无法关联到我们输入的名称,其默认将会使用 DefaultCompletionName 字段的值。

    7.png 8.png 9.png

    ———————参考文档———————
    [iOS]自定义文件模板(.xctemplate)
    自定义Xcode Template
    在 Xcode 中自定义快捷模板(Template)
    Xcode 代码块、类文件模板

    相关文章

      网友评论

          本文标题:iOS 自定义模版

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