程序员

iOS 图片打包成Bundle

2019-10-07  本文已影响0人  请不要念出我的名字

本文演示过程中使用的工具是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);

上一篇下一篇

猜你喜欢

热点阅读