美文网首页
iOS Bundle文件使用

iOS Bundle文件使用

作者: hello老文 | 来源:发表于2017-03-18 12:47 被阅读698次

    温故而知新, 记录下

    Settings Bundle

    1. 在Xcode上command+n, 选择创建Settings Bundle, 名字Test.bundle;

    2. Test.bundle上右键New Folder新建文件夹images, 把一个图片文件laowen.png拖进去;

    3. 把bundle内laowen.png图片拿出使用:

    NSString *strResourcesBundle = [[NSBundle mainBundle] pathForResource:@"Test" ofType:@"bundle"];
    NSString *strC = [[NSBundle bundleWithPath:strResourcesBundle] pathForResource:@"laowen" ofType:@"png" inDirectory:@"images"];
    UIImage *imgC = [UIImage imageWithContentsOfFile:strC];
    self.iv.image = imgC;
    ```

    macOS下的Bundle

    1. 在项目的TARGETS下点+号添加一个bundle, 选macOS下的Bundle创建一个MyBundle;

    2. MyBundleBuild SettingBase SDK改成Latest iOS;

    3. MyBundle内新建images文件夹并添加图片laowen.png;

    4. images拖入项目,要选Create groups;

    5. 选择MyBundle项目, Command+B编译;

    6. 在项目的Build Phases添加一个Run Script, 加入下面脚本:

      cp -R ${BUILT_PRODUCTS_DIR}/MyBundle.bundle ${BUILT_PRODUCTS_DIR}/${TARGET_NAME}.app
      
    7. 在项目中使用这个Bundle内的资源:

      #define MyLibBUNDLE_NAME @ "MyBundle.bundle"
      #define MyLibBUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:MyLibBUNDLE_NAME]
      #define MyLibBUNDLE [NSBundle bundleWithPath: MyLibBUNDLE_PATH]
      
      UIImage *img = [UIImage imageWithContentsOfFile:[[MyLibBUNDLE resourcePath] stringByAppendingPathComponent:@"test.png"]];
      

    其实, 直接建一个Bundle项目打包一个.bundle文件出来, 复制到需要的项目中使用, 这样比建一个Bundle附加在项目中这种做法更方便.

    • 如果遇到错误: pngcrush caught libpng error:,
      • 原因:该文件不是真正的png文件,可能是个jpg文件,实际的文件头信息是不一样的,造成不能识别
      • 解决方法有两种:
        1. 重新把图片文件处理成png文件
        2. 修改文件名后缀,比如改成.jpg

    Mac检测图片格式的方法

    Mac检测图片格式并不是使用后缀名,而是使用文件头信息来判断识别.可以通过UltraEdit来打开图片,16进制查看。

    • JPEG/JPG - 文件头标识 (2 bytes): $ff, $d8 (SOI) (JPEG 文件标识) - 文件结束标识 (2 bytes): $ff, $d9 (EOI)
    • TGA - 未压缩的前5字节 00 00 02 00 00 - RLE压缩的前5字节 00 00 10 00 00
    • PNG - 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A
    • GIF - 文件头标识 (6 bytes) 47 49 46 38 39(37) 61 G I F 8 9 (7) a
    • BMP - 文件头标识 (2 bytes) 42 4D B M
    • PCX - 文件头标识 (1 bytes) 0A
    • TIFF - 文件头标识 (2 bytes) 4D 4D 或 49 49
    • ICO - 文件头标识 (8 bytes) 00 00 01 00 01 00 20 20
    • CUR - 文件头标识 (8 bytes) 00 00 02 00 01 00 20 20
    • IFF - 文件头标识 (4 bytes) 46 4F 52 4D F O R M
    • ANI - 文件头标识 (4 bytes) 52 49 46 46 R I F F

    相关文章

      网友评论

          本文标题:iOS Bundle文件使用

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