前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义XCode的SwiftUI View模版(.xctemplate制作)

自定义XCode的SwiftUI View模版(.xctemplate制作)

作者头像
清墨
发布2023-09-13 08:19:55
2060
发布2023-09-13 08:19:55
举报
文章被收录于专栏:清墨_iOS分享清墨_iOS分享

关于自定义XCode内UIKit相关的文件模板,网上已有很多的教程,这里来介绍下对于SwiftUI View的自定义模板创建。

一、分析创建模板

1.下图为我们创建模板的展示,iOS下Source还是User Interface,User Interface下SwiftUI View还是我自定义的PSCustomScreen

图1.png

2.查看模版路径具体分析

路径:

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

图2.png

从上图我们可以看到,模板Templates分为文件模板和项目模板,我们再去到后面的User Interface文件夹里,我们可以看到如下,他们分别与图1 User Interface的模板相对应:

图3.png

同样的,我们去看另外的文件夹,他们的.xctemplate也与我们创建文件时的类型相对应。

二、实现自定义SwiftUI View模板

根据图一,我们知道SwiftUI View模板属于iOS下的User Interface,所以我们自定义的SwiftUI View模板也放到iOS下的User Interface里。 在实现之前我们分析下要怎么做:

1.查看User Interface下别的模板是怎么做的

image.png

image.png

image.png

image.png

注:

红框里的.xib和.storybord是最终生成的文件

两个png是模板上展示的icon

.plist是模板配置文件

2.我要怎么做
代码语言:javascript
复制
很明显:
SwiftUI View生成出来是个.swift文件;
icon我们可以自己定义;
.plist我们可以直接复制。

好,那咱们开始制作:

a.复制View.xctemplate文件夹,并放到桌面 b.删除文件夹里的.xib文件 c.去iOS/Source/Cocoa Touch Class.xctemplate/UIViewSwift下复制'FILEBASENAME.swift'文件

image.png

image.png

d.粘贴到我们桌面的View.xctemplate文件内

e.修改FILEBASENAME.swift里的内容

原本的因为是UIView,是UIKit框架,所以import UIKit,然后内容是class相关的

image.png

我们是SwiftUI,需要import SwiftUI,然后内容是struct相关,具体如下

image.png

这个例子是定义了Properties书写的位置、子视图书写的位置、一般类型的方法书写的位置、事件流转方法书写的位置和最后的Previews。

f.保存以上内容,将View.xctemplate命名成你想要的名字

g.将View.xctemplate命名后的文件放到User Interface下

image.png

h.这时候我们新建文件,就会出现我们自定义的模板(没有可以重启XCode再试试)

image.png

i.选择自定义模板创建文件,最终生成的.swift文件如下

image.png

三、分析下我们做了什么
代码语言:javascript
复制
//___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
代码语言:javascript
复制
___FILEBASENAMEASIDENTIFIER___是一个宏,代表我们自己的命名

其他的宏:
___PROJECTNAME___:工程名
___FILENAME___:包含后缀的文件名
___FILEBASENAME___ : 文件名
___FILEBASENAMEASIDENTIFIER___ :不包含后缀的c格式文件名
___VARIABLE_cocoaTouchSubclass___:继承的父类名字
___FULLUSERNAME___:用户名
___ORGANIZATIONNAME___:公司名
___COPYRIGHT___:版权说明
___DATE___:当前日期
___TIME___:当前时间
___YEAR___:当前年
___FILEHEADER___:默认类的头文件
ok,以上完成了我们所要的模板,也分析了我们为了这个模板做了什么,为什么这样做,希望对大家有所帮助。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、分析创建模板
  • 二、实现自定义SwiftUI View模板
    • 1.查看User Interface下别的模板是怎么做的
      • 2.我要怎么做
      • 三、分析下我们做了什么
        • ok,以上完成了我们所要的模板,也分析了我们为了这个模板做了什么,为什么这样做,希望对大家有所帮助。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档