本文演示过程中使用的工具是Xcode Version 10.1。
一 首先 command+shift+N 新建工程,选择 macOS ——bundle,如图1 所示:
图1二 选择 Build Setting 按照下面的选项配置:
"Base SDK" 设置为 "iOS "
"Build Active Architecture Only" 设置为 "YES" (Debug,Release均为YES)(仅编译当前环境,如果每个环境都编译一遍会使包变大)
Installation Directiotory 删除掉后面的路径 (不安装相关配置,也不需要安装路径)
Code Signing Identity 选择 "-"
"iOS Deployment Target" 设置为 iOS 8.0
"Skip Install" 设置为 "NO" (不需要安装相关配置)
"Strip Debug Symbols During Copy" 中"Release"模式设置为 "YES"
"COMBINE_HIDPI_IMAGES" 设置为 "NO" (不然图片会是tiff格式)
三 添加图片
因为我本地有整理好的图片文件夹,所以直接拖到了工程中。
图2然后在Build Phases中,图片资源自动添加好了,这样比较快捷。
图3四 选择 模拟器或者真机,然后command+B 进行编译,然后就会生成bundle
五 导出
选择Product文件下的bundle,右键——show in Finder
图4你就会看到在对应的编译环境下生成的bundle文件:
将这个文件拖到你所需要的工程中就可以了。
下面来说一下如何使用。
第一种方法,在图片名称前面加上bungle名称
UIImage *img =[UIImage imageNamed:@"EEESDK.bundle/beautyOrigin.png"]; self.imgView.image = img;
第二种方法比较麻烦,可以使用宏定义,直接传入图片名称就行
NSBundle *bundle =[NSBundle bundleForClass:self.class];
NSURL *url =[bundle URLForResource:@"EEE" withExtension:@"bundle"];
NSBundle *imageBundle =[NSBundle bundleWithURL:url];
UIImage *image =[UIImage imageNamed:@"deleteButton" inBundle:imageBundle compatibleWithTraitCollection:nil];
设置的宏为:
#define ImageBundlePath [[NSBundle mainBundle] pathForResource:@"EEE"ofType:@"bundle"]
#define Bundle [NSBundle bundleWithPath:ImageBundlePath]
#define BundleImg(Name) [UIImage imageNamed:Name inBundle:Bundle compatibleWithTraitCollection:nil];
第三种方法是查到的最多的,但是却不行,无法显示图片。也希望有知道的同学告知一下原因,也呼吁写文章的人请负责,行不行的通自己运行一下试试。
方法二不行
// NSString *imageBundlePath =[[NSBundle mainBundle]pathForResource:@"YBSDK" ofType:@"bundle"];
// NSLog(@"imageBundlePath--%@",imageBundlePath);
// NSBundle *bundle =[NSBundle bundleWithPath:imageBundlePath];
// NSLog(@"bundle--%@",bundle);
// NSString *path =[bundle pathForResource:menuModel.imgName ofType:@"png"];
// NSLog(@"imgPath22--%@",path);
// UIImage *imgw =[UIImage imageWithContentsOfFile:path];
// NSLog(@"img22--%@",imgw);
网友评论