我正在参与「启航计划」


导言

编码时,当咱们需要引用色彩、字体、图片等资源文件时,往往都是硬编码的方式,比方加载图片: UIImage(named: "logo"),明显这种字符串的硬编码不够优雅。

有多个第三方库能够帮助咱们处理这个问题,比方:SwiftGen,假如你想自界说API,那无妨看看这篇文章供给的思路。

设置

新建一个项目:MyProject,或许运用现有的项目。然后增加一个Package,咱们能够在这里保存一些资源文件和代码文件。

Swift 中类型安全的 Assets

保存到项目的根文件夹中,并增加到项目中。

Swift 中类型安全的 Assets

现在,项目的目录结构应该是这样的:

Swift 中类型安全的 Assets

这时候,Package 的 name 和 library的 name 是一样的,为了便于区别,咱们把 library的 name 换成 Assets。修改的位置如图所示:

Swift 中类型安全的 Assets

修改好后,把 Assets 增加 Frameworks,Libraries,and Embedded Content

Swift 中类型安全的 Assets

到此,前戏完毕。接下来进入战斗~

Colors

咱们先从界说 color 开端~

当咱们用 Xcode 创立一个项目时,默认会生成 Asset.xcassets,通常咱们会把图片、色彩等资源一股脑扔进去,跟着时间的推移,资源越来越多,它就会变得臃肿,难以查找。

这里咱们先为 Colors 创立一个新的文件夹:Colors.xcassets,放在如下图所示位置

Swift 中类型安全的 Assets

然后往其中增加几个你喜欢的色彩:

Swift 中类型安全的 Assets

再为这些色彩界说个类型,便利后期调用:

Swift 中类型安全的 Assets

❗️❗️❗️因为当前在另一个模块中,而不是咱们自己的iOS项目中,所以需要指定 bundle.module。不然导入该模块的目标会在自己的模块中查找色彩。

现在就能够便利的运用自界说色彩啦~

Swift 中类型安全的 Assets


Images

接下来,再把上面的办法应用在图片上,先在如图位置创立 Images.xcassets。并增加你需要的图片。

Swift 中类型安全的 Assets

与界说色彩类型类似,界说代表图片的类型 AppImage

Swift 中类型安全的 Assets

能够从 Images.xcassets 文件中获取 moon图片,也能够 SF Symbols 中获取 star 图片。 运转下面的代码来查看下效果吧~

Swift 中类型安全的 Assets

Swift 中类型安全的 Assets

大功告成~


Fonts

接下来,看下怎么处理字体。

咱们先界说个类型 AppFont:

界说了两种字体:title 和 subtitle。

title:运用自界说字体,

subtitle:运用内置的动态类型字体 Comic Neue 提取码: a4p4

下载上面的自界说字体,并导入 Package

Swift 中类型安全的 Assets

由于咱们现已将字体导入到包文件夹中,因而需要在Package.swift 中将其声明为资源:

Swift 中类型安全的 Assets

这样能够保证咱们在运用或许分发这个package时,咱们的字体包含在里边。

在运用字体时,不像运用色彩或图片那样简单指定模块。咱们必须向 Core Text 的字体管理器注册字体。

将下面的代码片段增加到 AppFont.swift:

Swift 中类型安全的 Assets

咱们还需要在应用程序启动时调用这个函数:

Swift 中类型安全的 Assets

现在就能够运用字体了:

Swift 中类型安全的 Assets


Tips

跟着项目中资源文件越来越多,需要对资源文件进行分组,比方图片,假如把所有的图片都界说在同一个枚举里,就显得很乱,不好区别。那怎么样能把图片分为 Tab、Login等组别呢,看下面~

Swift 中类型安全的 Assets

给 AppImage 增加 extension,并界说枚举 Tab,里边放App的tab图片,运用时就像这样:

Swift 中类型安全的 Assets


小结

上面的方式,xdm觉得怎么样?欢迎谈论交流~