组件化图片资源的引入方式

1,902 阅读2分钟

网上也查到不少组件化中图片资源的使用方法的文章,基本都是两种方式:

方法一:直接使用将图片资源直接放在一个文件夹中,然后通过设置s.resource_bundles引入文件夹内的图片将图片引入。

方法二:将图片放在bundle文件中,通过s.resources将bundle文件引入。

上述方式存在以下几个问题:

  1. 无法自动识别二倍三倍图。
  2. 无法像正常的Xcode工程一样,通过Assets.xcassets中可视化管理图片拉伸、渲染属性。
  3. xib中使用图片需要附带图片路径,无法在xib中直接预览。
  4. 无法利用Xcode自动图片压缩功能。

其中,最影响开发效率还是xib中图片的使用,无法预览不能够直观的观察显示效果,且需要手动加文件路径非常的影响开发效率。

1,图片资源的引入

将图片资源直接放在组建项目的Assets.xcassets中,并且在s.resource_bundles将 Assets.xcassets导入项目:

s.resource_bundles = {
    'xxxModule'=>['xxxModule/xxxModule/*.{xcassets}']
}

2,xib资源的引入

将所有xib资源也通过s.resource_bundles中导入,保证xib文件和Assets.xcassets文件在引入的组建的工程中保持在一个路径下。例如MainProject/xxxModule.bundle/中,这样xib文件才能够在主工程中找到xcassets文件夹中的图片资源:

s.resource_bundles = {
    'xxxModule'=>['xxx/xxx/*.{xcassets}',
    'xxxModule/xxxModule/**/*.{xib}']
}

使用这种方式的优势:

  1. 组件开发工程中直接通过xcassets文件夹维护图片资源。
  2. 组件开发工程中可以可视化的设置图片的拉伸、渲染等属性。
  3. 组件开发工程中在xib中使用图片和正常项目完全一样,不需要加路径前缀并支持预览。
  4. xcassets文件夹图片支持Xcode的自动图片压缩优化。
  5. 主工程中文件资源打包后统一在assets.car文件中,而不是散落成图片文件。