美文网首页程序员
iOS 图片打包成Bundle

iOS 图片打包成Bundle

作者: 请不要念出我的名字 | 来源:发表于2019-10-07 10:30 被阅读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);

    相关文章

      网友评论

        本文标题:iOS 图片打包成Bundle

        本文链接:https://www.haomeiwen.com/subject/dkbeectx.html