Bundle文件的创建和使用

经常会出现某个需求:将自己的模块或者开放类,封装成静态库给其他人提供方便的调用。

但是当你的模块中需要大量使用xib,图片,音频或者其他资源文件时,无法添加至静态库。这个时候就需要将一些资源文件封装至.Bundle文件中。那么封装好的东西应该含有三类文件:

1:开放的头文件(包含完整的调用注释)

2:静态库文件 后缀名为.a

3:Bundle文件,用于存放各种资源文件。

那么其他的都很简单:这里具体说说bundle文件的封装(其实也很简单)

第一步:创建Bundle项目

选择Bundle文件类型后并创建项目。

第二步:修改BuildSetting相关设置

1:Base SDK 修改为 iOS6 或者其他存在的iOS SDK版本

2:Architectures   修改为 armv7 armv7s

第三步:添加需要添加的资源文件

第四步:Build (这里不需要使用证书也可以编译成功)

这样就生成了自己的Bundle

调用的时候助需要引用至项目中就行,如下:

程序中引入方式:

 1 获得bundle中的资源
 2
 3 NSString * bundlePath = [[ NSBundle mainBundle] pathForResource: @ "MyBundle" ofType :@ "bundle"];
 4 NSBundle *resourceBundle = [NSBundle bundleWithPath:bundlePath];
 5 UIViewController *vc = [[UIViewController alloc] initWithNibName:@"vc_name" bundle:resourceBundle];
 6
 7 图片获得bundle中的资源
 8
 9 UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 50, 50)];
10 UIImage *image = [UIImage imageNamed:@"MyBundle.bundle/img_collect_success"];
11 [imgView setImage:image];
12
13 或者
14
15 UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(50, 50, 50, 50)];
16 NSString *imgPath= [bundlePath stringByAppendingPathComponent :@"img_collect_success.png"];
17 UIImage *image_1=[UIImage imageWithContentsOfFile:imgPath];
18 [imgView setImage:image_1];
19
20 当然,可以写成预编译语句:
21 #define MYBUNDLE_NAME @ "MyBundle.bundle"
22 #define MYBUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: MYBUNDLE_NAME]
23 #define MYBUNDLE [NSBundle bundleWithPath: MYBUNDLE_PATH]

如果想要将在某个非mainBundle的地方调用。那么需要额外加载此Bundle

时间: 2024-08-29 21:19:26

Bundle文件的创建和使用的相关文章

[转]Xcode封装.Bundle文件

经常会出现某个需求:将自己的模块或者开放类,封装成静态库给其他人提供方便的调用. 但是当你的模块中需要大量使用xib,图片,音频或者其他资源文件时,无法添加至静态库.这个时候就需要将一些资源文件封装至.Bundle文件中.那么封装好的东西应该含有三类文件: 1:开放的头文件(包含完整的调用注释) 2:静态库文件 后缀名为.a 3:Bundle文件,用于存放各种资源文件. 那么其他的都很简单:这里具体说说bundle文件的封装(其实也很简单) 第一步:创建Bundle项目 选择Bundle文件类型

Xcode封装.Bundle文件

经常会出现某个需求:将自己的模块或者开放类,封装成静态库给其他人提供方便的调用. 但是当你的模块中需要大量使用xib,图片,音频或者其他资源文件时,无法添加至静态库.这个时候就需要将一些资源文件封装至.Bundle文件中.那么封装好的东西应该含有三类文件: 1:开放的头文件(包含完整的调用注释) 2:静态库文件 后缀名为.a 3:Bundle文件,用于存放各种资源文件. 那么其他的都很简单:这里具体说说bundle文件的封装(其实也很简单) 第一步:创建Bundle项目 选择Bundle文件类型

自定义 bundle 包的创建

在我们使用第三方框架时,常常看到XXX.bundle的文件. 我们找到该文件,显示包内容,大致看到很多资源文件:图片.配置文本.XIB文件…… 什么是Bundle文件? 简单理解,就是资源文件包.我们将许多图片.XIB.文本文件组织在一起,打包成一个Bundle文件.方便在其他项目中引用包内的资源. Bundle文件的特点? Bundle是静态的,也就是说,我们包含到包中的资源文件作为一个资源包是不参加项目编译的.也就意味着,bundle包中不能包含可执行的文件.它仅仅是作为资源,被解析成为特定

关于android R.java文件无法创建的问题

R.java文件无法创建的原因网上有很多说法普遍是以下两种: 1. xml文件有错误: 解决方法就是找到哪个xml有错然后把错误修复就OK了. 2.编码问题 这时候只要把xml文件的编码改成utf8就能解决问题. 然而对于查找xml文件错误我们常常依赖android的自带工具进行检测,但是只要是人写得程序必然会有一些bug, 当检测工具出现bug后有可能导致错误很难定位. 而在xml文件校验方面,里面就有一个很坑的bug: 当menu目录下的文件有错时导致r文件无法生成时,可能不会给出任何有关m

谢烟客---------Linux之文件系统管理创建与挂载

文件系统在哪实现? 内核 内核级文件系统的组成?模块.用户空间中的程序 哪些是内核级文件系统?除了分布式文件系统 模块的定义 中间层定义 文件如何按名存取 查找文件.创建文件.存储文件文件系统.格式化 swap,虚拟内存 日志型文件系统和非日志型文件系统工作原理 超级块 文件按名存取的实现 文件系统实现按名存取将分区后的存储空间划分为数据区和元数据区. 数据区:   存储大小相同的数据块    元数据区:有多个inode块,每个inode块中存储:filename,perm,owner,grou

Linux 设备文件的创建和mdev

引子 本文是嵌入式企鹅圈开篇--<linux字符设备驱动剖析>的姐妹篇,在上述文章里面我们具体描写叙述了字符设备驱动框架涉及的驱动注冊.通过设备文件来訪问驱动等知识.并明白通过device_create接口并结合mdev来创建设备文件.但没有展开这个知识点. 本文将从代码级去理解Linux设备类和设备文件的创建过程. 通过这两篇文章,我们将能够对linux字符设备驱动的机制和脉络有全面的认识. 下面程序分析没有缩进,编辑了好几次都不行,耐心点才干跟踪完整个代码:-) 一.设备类相关知识 设备类

文件的创建、删除、重命名

-------------siwuxie095 工程结构目录如下: 1.文件的创建: 代码: package com.siwuxie095.file; import java.io.File; import java.io.IOException; public class HelloFile { public static void main(String[] args) { //由于只指定了文件名,而没有指定路径,即相对路径 //对于一个工程而言,其相对路径即工程本身的文件夹(目录) Fil

C# 轻松读取、改变文件的创建、修改、访问时间 z

// 读取文件的创建.修改.访问时间FileInfo fi = new FileInfo("C://test.txt");Console.WriteLine(fi.CreationTime.ToString());Console.WriteLine(fi.LastWriteTime.ToString());Console.WriteLine(fi.LastAccessTime.ToString()); // 改变(设置)文件的创建.修改.访问时间File.SetCreationTime

php学习笔记--高级教程--读取文件、创建文件、写入文件

打开文件:fopen:fopen(filename,mode);//fopen("test.txt","r"): 打开模式:r  仅仅读方式打开,将文件指针指向文件头 r+  读写方式打开,将文件指针指向文件头 w  写入方式,指向文件头,假设不存在则尝试创建 w+ 读写方式,指向文件头,假设不存在则尝试创建 a  写入方式打开,指向文件末尾,假设不存在则尝试创建 a+ 读写方式打开,指向文件末尾,假设不存在则尝试创建 读取文件:fread:fread(); rea