网上也查到不少组件化中图片资源的使用方法的文章,基本都是两种方式:
方法一:直接使用将图片资源直接放在一个文件夹中,然后通过设置s.resource_bundles引入文件夹内的图片将图片引入。
方法二:将图片放在bundle文件中,通过s.resources将bundle文件引入。
无论用哪种方式,都存在以下几个问题:
- 无法自动识别二倍三倍图。
- 无法像正常的Xcode工程一样,方便地通过Assets.xcassets中直接可视化的管理图片的各种拉伸、渲染属性。
- 在xib中使用图片时候,需要在图片名之前附带图片途径,且无法在xib中直接预览。
- 无法利用Xcode自动图片压缩功能。
其中,最影响开发效率还是xib中图片的使用,无法预览不能够直观的观察显示效果,需要手动加文件路径非常的影响开发效率。
下面就是一个既可以使用Assets.xcassets中直接可视化的管理图片的各种拉伸、渲染属性,还可以实现在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}']
}
完成上面的配置,就可以了~
这样使用的好处:
- 组件开发工程中直接通过xcassets文件夹维护图片资源,支持并自动识别自动识别二倍三倍图。
- 组件开发工程中可以可视化的设置图片的拉伸、渲染等属性。
- 组件开发工程中在xib中使用图片和正常项目完全一样,不需要加路径前缀并支持预览。
- xcassets文件夹图片支持Xcode的自动图片压缩优化。
- 主工程中文件资源打包后统一在assets.car文件中,而不是散落成图片文件。