• 在framework中打包xib 【转】


    废话不多说,直接上图

    1、Copy Bundle Resources 中加入相关xib

    2、这里是重点,调用的时候不能直接写

    [objc] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. [[NSBundle mainBundle] loadNibNamed:@"yourXibName" owner:nil options:nil]  


    而要加入framework中的路径,否则在调用的时候会报找不到xib文件(路径不同)的错,继而crash

    [objc] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. [[NSBundle mainBundle] loadNibNamed:@"yourframework.framework/yourXibName" owner:nil options:nil]  

    3、编译完成后可以看到在framework目录下生成了对应的nib文件(xib编译之后生成nib,详情自己搜吧)

    4、然后在项目配置的时候,需要把framework加入到Copy Bundle Resources 中,这一步也是重点

    不过这样会增加整个包的大小

    因此个人认为还是使用.a+bundle的形式更为妥当

    另外如果在xib中直接加载了图片资源,则需要使用代码进行重新设置,因为无论是framework的形式还是.a+bundle的形式,资源目录都发生了改变,不再是从.app的根目录下去取资源,而是在.app目录下的bundle或者framework目录中取,因此加载资源的方式也需要进行更改

    [objc] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. + (NSString *)pathForResource:(NSString *)name ofType:(NSString *)type {  
    2.     NSBundle *bkBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:YOUR_BUNDLE_NAME ofType:@"bundle"]];  
    3.     NSString* path = [bkBundle pathForResource:name ofType:type];  
    4.     return path;  
    5. }  


    还有一个蛋疼的地方需要注意,在xcode6下,combine_hidpi_images的默认设置项为yes,需要手动改为no,否则bundle中的png图片经过编译打包会变成tiff的文件,进而导致对应图片找不到

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    Blog都是随笔,只当做笔记,不会有详细介绍,测试请慎重。。。
  • 相关阅读:
    C#序列化效率对比
    将聚合记录集逆时针和顺时针旋转90度(行列互换)
    Sql的行列转换
    log4net配置
    input框添加阴影效果
    WCF自定义地址路由映射(不用svc文件)
    Jquery对当前日期的操作(格式化当前日期)
    用JQuery获取输入框中的光标位置
    sublime text3安装后html:5+Tab不能快速生成html头部信息的解决办法
    js获取url传递参数,js获取url?号后面的参数
  • 原文地址:https://www.cnblogs.com/JerryBaxia/p/4806684.html
Copyright © 2020-2023  润新知