• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

苹果开发之 Swift 中类型安全的 Assets

武飞扬头像
juejin
帮助217

引言

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

有多个第三方库可以帮助我们解决这个问题,比如:SwiftGen,如果你想自定义API,那不妨看看这篇文章提供的思路。

设置

新建一个项目:MyProject,或者使用现有的项目。然后添加一个Package,我们可以在这里保存一些资源文件和代码文件。

2022-09-21_21-11-42.png

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

2022-09-21_21-14-05.png

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

2022-09-21_21-15-27.png

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

2022-09-21_21-19-37.png

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

2022-09-21_21-17-50.png

到此,前戏结束。接下来进入战斗~

Colors

我们先从定义 color 开始~

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

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

2022-10-07_17-19-28.png

然后往其中添加几个你喜欢的颜色:

2022-10-07_17-21-47.png

再为这些颜色定义个类型,方便后期调用:

image.png

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

现在就可以方便的使用自定义颜色啦~

image.png


Images

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

image.png

与定义颜色类型类似,定义代表图片的类型 AppImage

image.png

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

image.png

image.png

大功告成~


Fonts

接下来,看下如何处理字体。

我们先定义个类型 AppFont:

定义了两种字体:title 和 subtitle。

title:使用自定义字体,

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

下载上面的自定义字体,并导入 Package

image.png

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

image.png

这样可以确保我们在使用或者分发这个package时,我们的字体包含在里面。

在使用字体时,不像使用颜色或图片那样容易指定模块。我们必须向 Core Text 的字体管理器注册字体。

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

image.png

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

image.png

现在就可以使用字体了:

image.png


Tips

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

image.png

给 AppImage 添加 extension,并定义枚举 Tab,里面放App的tab图片,使用时就像这样:

image.png


小结

上面的方式,xdm觉得怎么样?

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanegbe
系列文章
更多 icon
同类精品
更多 icon
继续加载