苹果开发之 Swift 中类型安全的 Assets
引言
编码时,当我们需要引用颜色、字体、图片等资源文件时,往往都是硬编码的方式,比如加载图片: UIImage(named: "logo")
,显然这种字符串的硬编码不够优雅。
有多个第三方库可以帮助我们解决这个问题,比如:SwiftGen,如果你想自定义API,那不妨看看这篇文章提供的思路。
设置
新建一个项目:MyProject,或者使用现有的项目。然后添加一个Package,我们可以在这里保存一些资源文件和代码文件。
保存到项目的根文件夹中,并添加到项目中。
现在,项目的目录结构应该是这样的:
这时候,Package 的 name 和 library的 name 是一样的,为了便于区分,我们把 library的 name 换成 Assets。修改的位置如图所示:
修改好后,把 Assets 添加 Frameworks,Libraries,and Embedded Content
到此,前戏结束。接下来进入战斗~
Colors
我们先从定义 color 开始~
当我们用 Xcode 创建一个项目时,默认会生成 Asset.xcassets,通常我们会把图片、颜色等资源一股脑扔进去,随着时间的推移,资源越来越多,它就会变得臃肿,难以查找。
这里我们先为 Colors 创建一个新的文件夹:Colors.xcassets,放在如下图所示位置
然后往其中添加几个你喜欢的颜色:
再为这些颜色定义个类型,方便后期调用:
❗️❗️❗️因为当前在另一个模块中,而不是我们自己的iOS项目中,所以需要指定 bundle
为 .module
。否则导入该模块的目标会在自己的模块中查找颜色。
现在就可以方便的使用自定义颜色啦~
Images
接下来,再把上面的方法应用在图片上,先在如图位置创建 Images.xcassets。并添加你需要的图片。
与定义颜色类型类似,定义代表图片的类型 AppImage
可以从 Images.xcassets 文件中获取 moon图片,也可以 SF Symbols 中获取 star 图片。 运行下面的代码来查看下效果吧~
大功告成~
Fonts
接下来,看下如何处理字体。
我们先定义个类型 AppFont:
定义了两种字体:title 和 subtitle。
title:使用自定义字体,
subtitle:使用内置的动态类型字体 Comic Neue 提取码: a4p4
下载上面的自定义字体,并导入 Package
由于我们已经将字体导入到包文件夹中,因此需要在Package.swift 中将其声明为资源:
这样可以确保我们在使用或者分发这个package时,我们的字体包含在里面。
在使用字体时,不像使用颜色或图片那样容易指定模块。我们必须向 Core Text 的字体管理器注册字体。
将下面的代码片段添加到 AppFont.swift:
我们还需要在应用程序启动时调用这个函数:
现在就可以使用字体了:
Tips
随着项目中资源文件越来越多,需要对资源文件进行分组,比如图片,如果把所有的图片都定义在同一个枚举里,就显得很乱,不好区分。那怎么样能把图片分为 Tab、Login等组别呢,看下面~
给 AppImage 添加 extension,并定义枚举 Tab,里面放App的tab图片,使用时就像这样:
小结
上面的方式,xdm觉得怎么样?
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanegbe
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01