IOS的Bundle资源束制作
来源:互联网 发布:海康300万网络摄像机 编辑:程序博客网 时间:2024/05/24 07:35
转载自:http://blog.csdn.net/nono_love_lilith/article/details/8529890
bundle制作其实是前面制作静态库的一个衍生。
在静态库的制作中,很多时候我们的静态库也是带着文件,图片和多媒体资源的。
若只是直接加入到项目中也是可以,但是,考虑到方便管理(方便插件使用者的管理),我们希望把插件的资源文件打成一个包来管理。
比如,我们项目中有用到的银联支付插件。
这样我们直接添加xxxx.bundle文件到项目中就可以,这样在以后如果要删除的话直接删除一个xxx.bundle文件就行了。
当然有人也会说,那我直接在项目中新建一个group来管理也是一样的容易。
此刻,我只能很装逼的说一句:这样,显得专业点么~。
你看three20啊,银联啊等等。整体项目目录相对看起来简约点。
bundle的制作。
1.新建一个文件夹,然后将文件夹命名修改你要的文件夹名,并且加上后缀:xxx.bundle。
然后你就会看到文件夹变成了一个我们常见的bundle样式的文件夹。
2.加入文件资源,此时为了方便管理,我们最好现在里面新建3种资源的文件夹
当然了,不创建也没关系,但是这个images文件夹最好创建,因为,我们会把所有的图片资源放在这里来方便管理。
然后添加点图片到images中。
3.把bundle文件加入到项目中
4.读取和使用文件。
- UILabel *la = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 50, 50)];
- la.text = @"陈凯";
- NSString *image_url = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"nono.bundle/images/android.png"];
- la.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:image_url]];
此时,因为以前我们获取UIImage对象大部分都是直接使用的api为:
[UIImage imageNamed:@"android.png"]
方法其实也是通过相对路径给我们找到了图片资源。
但是在我们自己制作的bundle文件夹的图片资源则不能使用该方法来找到了。
我们每次指定图片需要传入一个很长的地址,觉得比较麻烦。但是我们会发现,图片都是在xxx.bundle/images下面。
那么我们也可以使用宏或是类别来定义一个方法来简单到和[UIImage imageNamed:@"android.png"]一样。只需一个文件名就行了。
宏的表现可以参考three20下的
- TTIMAGE(@"bundle://Three20.bundle/images/backIcon.png")
three20框架中其实是使用了scheme的思想,bundle://和document;//来加载不同文件夹下的资源。
加载自定义bundle文件夹下的图片最后就是根据
先获取应用的绝对路径
mainbundle_path = [NSBundlemainBundle] resourcePath] ;
然后截取了bundle://后面的path 和mainbundle_path组装成最后的地址。
对于我们,简单的实现可以直接使用类别
- -(UIImage*) imagesNamedFromCustomBundle:(NSString *)name
- {
- NSString *main_images_dir_path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"nono.bundle/images"];
- // NSAssert(main_images_dir_path, @"main_images_dir_path is null");
- NSString *image_path = [main_images_dir_path stringByAppendingPathComponent:name];
- return [UIImage imageWithContentsOfFile:image_path];
- }
创建一个UIImage的类别,添加这个扩展的方法。
end
- IOS的Bundle资源束制作
- IOS的Bundle资源束制作
- IOS的Bundle资源束制作
- IOS的Bundle资源束制作
- IOS的Bundle资源束制作
- IOS的Bundle资源束制作
- IOS的Bundle资源束制作
- IOS的Bundle资源束
- iOS-制作并调用Bundle资源包
- iOS 访问Bundle中的资源
- .bundle的制作
- iOS 静态库制作,Framework制作,Bundle制作
- iOS工程 与 资源文件 和 Bundle
- IOS封装Framework,使用bundle管理资源
- ios Bundle的使用
- IOS----制作使用静态库 制作使用Bundle
- IOS开发中制作属于自己的静态库.a、资源库.bundle、.framework
- IOS开发中制作属于自己的静态库.a、资源库.bundle、.framework
- 【007】动态内存管理
- Android中alarmManager的使用
- 资源分享:labview2013中文版
- vim编辑lua代码配置
- oracle修改process和sssion数
- IOS的Bundle资源束制作
- 在eclipse下运行hadoop程序
- Splay+BZOJ1058
- 关于gem5预取实验时的一些注意事项
- instanceof用法
- 为什么linux下多线程程序如此消耗虚拟内存
- JBoss安装
- andriod listview OnScrollListener回调分析
- 【总结】Python中第三方的库(library)、模块(module),包(package)的安装方法