关于自定义XCode内UIKit相关的文件模板,网上已有很多的教程,这里来介绍下对于SwiftUI View的自定义模板创建。
一、分析创建模板
1.下图为我们创建模板的展示,iOS下Source还是User Interface,User Interface下SwiftUI View还是我自定义的PSCustomScreen
路径:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates
从上图我们可以看到,模板Templates分为文件模板和项目模板,我们再去到后面的User Interface文件夹里,我们可以看到如下,他们分别与图1 User Interface的模板相对应:
二、实现自定义SwiftUI View模板
根据图一,我们知道SwiftUI View模板属于iOS下的User Interface,所以我们自定义的SwiftUI View模板也放到iOS下的User Interface里。
在实现之前我们分析下要怎么做:
1.查看User Interface下别的模板是怎么做的
红框里的.xib和.storybord是最终生成的文件
两个png是模板上展示的icon
.plist是模板配置文件
2.我要怎么做
很明显:
SwiftUI View生成出来是个.swift文件;
icon我们可以自己定义;
.plist我们可以直接复制,然后修改其中的MainTemplateFile后对应的值由.xib变成.swift即可。
好,那咱们开始制作:
a.复制View.xctemplate文件夹,并放到桌面
b.删除文件夹里的.xib文件
c.去iOS/Source/Cocoa Touch Class.xctemplate/UIViewSwift下复制'FILEBASENAME.swift'文件
e.修改FILEBASENAME.swift里的内容
原本的因为是UIView,是UIKit框架,所以import UIKit,然后内容是class相关的
f.保存以上内容,将View.xctemplate命名成你想要的名字
g.将View.xctemplate命名后的文件放到User Interface下
三、分析下我们做了什么
//___FILEHEADER___
import SwiftUI
struct ___FILEBASENAMEASIDENTIFIER___: View {
// MARK: - Properties
var body: some View {
mainView
}
}
// MARK: - Subviews
extension ___FILEBASENAMEASIDENTIFIER___ {
@ViewBuilder var mainView: some View {
VStack {
}
}
}
// MARK: - Normal Func
extension ___FILEBASENAMEASIDENTIFIER___ {
}
// MARK: - Event Func
extension ___FILEBASENAMEASIDENTIFIER___ {
}
#if DEBUG
struct ___FILEBASENAMEASIDENTIFIER____Previews: PreviewProvider {
static var previews: some View {
___FILEBASENAMEASIDENTIFIER___()
}
}
#endif
___FILEBASENAMEASIDENTIFIER___是一个宏,代表我们自己的命名
其他的宏:
___PROJECTNAME___:工程名
___FILENAME___:包含后缀的文件名
___FILEBASENAME___ : 文件名
___FILEBASENAMEASIDENTIFIER___ :不包含后缀的c格式文件名
___VARIABLE_cocoaTouchSubclass___:继承的父类名字
___FULLUSERNAME___:用户名
___ORGANIZATIONNAME___:公司名
___COPYRIGHT___:版权说明
___DATE___:当前日期
___TIME___:当前时间
___YEAR___:当前年
___FILEHEADER___:默认类的头文件