创建存放共享资源的 Framework
本文最后更新于 2021年4月4日 晚上
在一个比较大的工程中, 通常会将某些独立的组件都抽取出来构造成可重用的 Framework 来使用, 如何在这些 Framework 中共享一些设计资源就成了一个突出的问题, 这里介绍一种比较常规的办法来实现不同的 Framework 中使用同一个资源 Framework 中的资源.
需求描述
在 APP 施工过程中, 有个组件 A 需要抽取出来进行复用, 组件 A 可能在以后的 APP Extension 中用到, 故需要将组件 A 封装到一个 Framework 以供不同的 Target 使用.
不过有个问题, 在组件 A 中使用到的一些图片资源在某些不使用组件 A 的 Target 中也会用到, 如果将这些资源分别放到 A 中以及另外的 Target 中, 必然造成资源的重复, 结果就是 APP 包体积变大.
这个时候就需要一种办法将资源在不同的 Target 间共享, 而解决方式就是创建一个”资源 Framework”来实现资源共享.
实现方式
新建一个 Framework, 命名为 ResourcesPackage
, 如下图所示:
在这个 Framework 中新建一个类, 并提供获取 Bundle 的方法, 以便外部使用:
1 |
|
比如有一些需要共享的图片, 则新建一个 Asset catalog 存储图片, Asset catalog 的命名随意:
在新建的 Asset Catalog 中添加图片资源, 这里添加的一个通用的导航栏后退按钮图片, 名为 v2_home_search_back
, 如下图所示:
则其他 Target 使用时, 只需要链接我们新建的 ResourcesPackage
库:
在代码中访问对应的图片资源即可:
1 |
|
如果想要共享颜色以及 string 资源, 同样也可以添加在这个 Framework 里面.
这种办法可以很好地替代之前的 Resource Bundle, 并且支持一些代码化的资源.