Xcode 代碼塊、類文件模板

代碼塊

  1. 書寫代碼
@property (nonatomic, copy) NSString *<#name#>;
  1. 選中代碼右鍵,選擇 Create Code Snipped


  2. 編輯代碼塊信息


Xcode的自帶代碼模板是用一個(gè)plist格式xml文件描述的,存儲(chǔ)在Xcode的安裝目錄:
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/SystemCodeSnippets.codesnippets

自定義的代碼塊路徑:
~/Library/Developer/Xcode/UserData/CodeSnippets/

自定義文件頭部注釋

  1. 創(chuàng)建 IDETemplateMacros.plist 文件
  2. 添加宏名稱 FILEHEADER
  3. 添加宏對(duì)應(yīng)的值,即自定義的注釋格式
DATE:現(xiàn)在的日期

FILENAME:所在文件的全名

ORGANIZATIONNAME:機(jī)構(gòu)名稱,在配置文件中獲取

PACKAGENAME:包名

PRODUCTNAME:應(yīng)用名稱

PROJECTNAME:工程名

TIME:時(shí)間

FULLUSERNAME:用戶名,為當(dāng)前MasOS的用戶賬號(hào)名

WORKSPACENAME:工作區(qū)名稱

YEAR:當(dāng)前年份

COPYRIGHT:版權(quán)字符串,由機(jī)構(gòu)名稱和創(chuàng)建年份構(gòu)成,例如Copyright ? 2019 CY. All rights reserved.
**************************************************************************************
//                                   _(\_/)
//                                 ,((((^`\
//                                ((((  (6 \
//                              ,((((( ,    \
//          ,,,_              ,(((((  /"._  ,`,
//         ((((\\ ,...       ,((((   /    `-.-'
//         )))  ;'    `"'"'""((((   (
//        (((  /            (((      \
//         )) |                      |
//        ((  |        .       '     |
//        ))  \     _ '      `t   ,.')      File name:     ___FILENAME___
//        (   |   y;- -,-""'"-.\   \/
//        )   / ./  ) /         `\  \       Author:        ___FULLUSERNAME___
//           |./   ( (           / /'
//           ||     \\          //'|        Created on:    ___DATE___
//           ||      \\       _//'||
//           ||       ))     |_/  ||        Description:   <#功能描述#>
//           \_\     |_/          ||
//           `'"                  \_\
//                                `'"
//***************************************************************************************

/*
 *
 *   █████?█    ██  ▄████▄   ██ ▄█?       ██████╗ ██╗   ██╗ ██████╗
 * ▓██   ? ██  ▓██??██? ?█   ██▄█?        ██╔══██╗██║   ██║██╔════╝
 * ?████ ?▓██  ?██??▓█    ▄ ▓███▄?        ██████╔╝██║   ██║██║  ███╗
 * ?▓█?  ?▓▓█  ?██??▓▓▄ ▄██?▓██ █▄        ██╔══██╗██║   ██║██║   ██║
 * ??█?   ??█████▓ ? ▓███? ??██? █▄       ██████╔╝╚██████╔╝╚██████╔╝
 *  ? ?   ??▓? ? ? ? ?? ?  ?? ?? ▓?       ╚═════╝  ╚═════╝  ╚═════╝
 *  ?     ???? ? ?   ?  ?   ? ?? ??
 *  ? ?    ??? ? ? ?        ? ?? ?
 *           ?     ? ?      ?  ?
 *           
 *    File name:     ___FILENAME___
 *    Author:        ___FULLUSERNAME___
 *    Created on:    ___DATE___
 *    Description:   <#功能描述#>
 */
  1. 將 .plist 文件放置到特定的目錄
  • 適用于整個(gè)工程(個(gè)人)
    <ProjectName>.xcodeproj/xcuserdata/[username].xcuserdatad/
  • 適用于整個(gè)工程(共享)
    <ProjectName>.xcodeproj/xcshareddata/
  • 適用于整個(gè)工作區(qū)(個(gè)人)
    <WorkspaceName>.xcworkspace/xcuserdata/[username].xcuserdatad/
  • 適用于整個(gè)工作區(qū)(共享)
    <WorkspaceName>.xcworkspace/xcshareddata/
  • 適用于整個(gè)Xcode
    ~/Library/Developer/Xcode/UserData/

FILEHEADER宏的系統(tǒng)設(shè)置探究

通過Xcode ? Contents ? Developer ? Platforms ? iPhoneOS.platform ? Developer ? Library ? Xcode ? Templates路徑,然后搜索Cocoa Touch Class.xctemplate,以其中的NSObjectObjective-C文件為例


自定義類模板

  1. 在路徑:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates 下創(chuàng)建 Custom 文件夾

  2. 創(chuàng)建 Custom View.xctemplate 文件夾,從Source文件夾下面的 Cocoa Touch Class.xctemplate 中復(fù)制 TemplateInfo.plist 文件過來進(jìn)行修改。并添加 TemplateIcon.png(5757) 和 TemplateIcon@2x.png(114114)。

  3. 在Options中有Item0-Item3四個(gè)配置,對(duì)應(yīng)的是我們創(chuàng)建文件時(shí)候的四個(gè)選項(xiàng),如下圖


修改 TemplateInfo.plist 文件如下,并刪除了 item3 中 swift 相關(guān)內(nèi)容


  1. 創(chuàng)建 UIViewXIBObjective-C 文件夾,添加 ___FILEBASENAME___.xib 文件,并修改內(nèi)容
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
    <device id="retina6_1" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15704"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view contentMode="scaleToFill" id="iN0-l3-epB" insetsLayoutMarginsFromSafeArea="NO" customClass="___FILEBASENAME___">
            <rect key="frame" x="0.0" y="0.0" width="300" height="200"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
            <point key="canvasLocation" x="65" y="-200"/>
        </view>
    </objects>
</document>
  1. 添加 ___FILEBASENAME___.h___FILEBASENAME___.m 文件
//___FILEHEADER___

___IMPORTHEADER_cocoaTouchSubclass___

NS_ASSUME_NONNULL_BEGIN

@interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___
- (void)configViewWithModel:(id)model;
@end

NS_ASSUME_NONNULL_END
//___FILEHEADER___

#import "___FILEBASENAME___.h"

@interface ___FILEBASENAMEASIDENTIFIER___ ()

@end

@implementation ___FILEBASENAMEASIDENTIFIER___

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (!self) return nil;
    
    return self;
}

+ (instancetype)loadFromNib {
    NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil];
    if ([nibs count] == 0) {
        return nil;
    }
    
    return nibs.firstObject;
}

- (void)awakeFromNib {
    [super awakeFromNib];
    
}

- (void)layoutSubviews {
    [super layoutSubviews];
    
}

#pragma mark - Action

#pragma mark - Getter && Setter

@end

大功告成?。。∠旅嫣峁┫?UIViewController 的模板。

//___FILEHEADER___

#import "___FILEBASENAME___.h"

@interface ___FILEBASENAMEASIDENTIFIER___ ()

@end

@implementation ___FILEBASENAMEASIDENTIFIER___

#pragma mark - LifeCycle

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self configUI];
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    
}

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
}

#pragma mark - Config UI

- (void)configUI {
    
}

#pragma mark - Action

#pragma mark - NetWork

#pragma mark - Overwirte

#pragma mark - Public

#pragma mark - Private

#pragma mark - Getter && Setter


@end
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。