前言
在Framwork
中包含了本地图片的读取和使用时,直接使用[UIImage imageNamed:...]
是没有办法找到对应的图片的;
而在Framwork
中 打包图片的方式,也有多种
一、使用Bundle
- 创建一个
Bundle
,把图片资源放入Bundle
中;
image.png - 把该
Bundle
与Framework
同时导入主工程中;
- 使用该
Bundle
中的图片资源
NSString *path = [[NSBundle mainBundle] pathForResource:@"Source" ofType:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithPath:path];
return [UIImage imageNamed:@"test" inBundle:bundle compatibleWithTraitCollection:nil];
不论
Framework
是静态库或者动态库,都可以使用此种方式引入图片资源;
二、使用xcassets
我们可以在Framework
内部,新建一个xcassets
文件,把图片引入xcassets
中;
该
xcassets
文件,在编译成功后,会编译为Assets.car
文件- 使用
xcassets
中的图片
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
return [UIImage imageNamed:@"test" inBundle:bundle compatibleWithTraitCollection:nil];
使用
xcassets
方式,Framework
必须为动态库,静态库图片资源获取不到;
三、直接引入
-
可以把图片直接引入到
Framework
中;
-
Framework
编译成功后
-
使用该图片
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
return [UIImage imageNamed:@"name" inBundle:bundle compatibleWithTraitCollection:nil];
此种方式,
Framework
必须为动态库,静态库图片资源获取不到;
网友评论