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")
返回的就是一个image对象。
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
转自:http://blog.csdn.net/nono_love_lilith/article/details/8529890
相关推荐
iOS Framework制作和打包是iOS开发中的一个重要环节,它能够让你将重复使用的代码封装成一个模块化的组件,从而简化开发流程,提高开发效率。本文将详细介绍iOS Framework的创建和打包过程。 首先,我们需要理解...
本教程将详细讲解如何制作非静态的iOS Framework,这是一种动态链接库,允许在运行时加载代码,提高了应用的灵活性。 一、iOS Framework类型 iOS Framework主要有两种类型:静态库(Static Library)和动态库...
Xcode制作包含xib等资源的静态库的流程如下: 1. 创建静态库工程: 在Xcode中新建一个项目,选择“iOS”->“Framework & Library”->“Cocoa Touch Static Library”。点击“Next”,输入项目名称和位置,创建新...
在iOS平台上,播放GIF动画是一项常见的需求,特别是在制作各种社交、娱乐或教育应用时。本文将详细讲解如何在iOS应用中实现GIF动画的播放,并以“AnimatedGifExample”为例,阐述相关的编程知识点。 首先,我们需要...
通过阅读和研究源代码,我们可以学习如何有效地处理图像资源,以及如何利用iOS系统提供的图形工具来实现复杂的图像操作,比如精灵动画。同时,这也是一个了解和实践Objective-C或Swift编程语言的好机会,因为这些...
本项目“Unity制作跑酷游戏,内含源码及资源”提供了一个完整的跑酷游戏实例,对于想要学习Unity游戏开发或者对跑酷游戏机制感兴趣的开发者来说,这是一个极好的学习资料。 首先,我们要理解跑酷游戏的基本元素。...
标题《教你设置,音频,以及晃动检测》和描述《该文章翻译自iOS in Practice 一书,资源来自Cocoachina。通过制作一个上架应用TimeDown教你设置,音频,以及晃动检测。》暗示了文章内容主要围绕iOS开发实践中的三个...
在Android开发中,有时我们希望实现与iOS类似的开关按钮(SwitchButton),但不依赖于图片资源,以提高应用性能和自定义能力。本教程将详细介绍如何在Android中使用纯代码来实现一个仿iOS风格的滑动开关,无需依赖...
在iOS开发中,有时我们需要将一组相关功能封装成一个库,以便在...此外,你还可以参考相关文章了解更多关于`.a`静态库、`.framework`静态库以及`.bundle`资源包的创建和使用方法,以及静态库和动态库的区别和使用场景。
- **Icons/Imanges/Resources**:Passbook中的Pass可以包含图标、图片和其他资源文件来增强用户体验。 #### 三、Pass的生命周期 Pass的生命周期主要包括三个阶段: 1. **生产环节**:Pass的创建过程,包括Pass....
这将包含你的应用代码、资源和证书信息,用于提交到App Store Connect。 5. **在App Store Connect提交** 登录App Store Connect(https://appstoreconnect.apple.com),创建新的App记录。填写App的元数据,包括...
2. 资源处理:图片等资源通常放在.bundle文件中,便于管理和分发。 3. Category问题:静态库中的Category可能会遇到运行时错误,解决方案是在使用静态库的工程中添加-ObjC选项。 4. 头文件管理:如果静态库的头文件...
它支持JavaScript和TypeScript编程,提供了直观的可视化编辑界面,让开发者能够高效地进行游戏场景设计、动画制作和逻辑编写。 二、JavaScript基础 JavaScript是CocosCreator的主要脚本语言,用于处理游戏逻辑。JS...
以下是利用WebView制作PDF阅读器的关键步骤: 1. **导入WebKit框架**:在Xcode项目中,你需要导入WebKit框架,这样你才能使用WebView。在Swift中,可以通过`import WebKit`来导入。 2. **创建WebView**:在你的...
Unity支持Asset Bundle功能,允许开发者将游戏资源打包成独立的文件,在运行时按需加载,降低初始加载时间。《觅字江湖》可能就利用了这一特性,根据游戏需求动态加载不同的资源,提高用户体验。 音效和音乐的集成...
- Bundle(资源包):作为一个资源容器,它允许加载和释放资源,提供了一种组织资源的方式。 - Cache(缓存):用于缓存游戏中频繁使用的资源数据。 - AssetManager(资源管理器):管理资源的行为和信息,比如...
这主要通过Asset Bundle实现,Asset Bundle是Unity的一种资源打包方式,可以将游戏的模型、纹理、音频等资源分离打包,然后在运行时动态加载。当游戏需要更新时,服务器只需上传新的Asset Bundle,客户端则根据需求...
- Asset Bundle:动态加载和卸载资源,优化游戏性能 10. **UI系统** - Canvas:UI的基础元素 - Text、Image、Button等UI组件的使用 - UI事件监听与响应 - Canvas Group和RectTransform的调整 11. **场景管理*...
本资源是一个“emoji表情包”,其中包含了.plist文件,这通常与iOS或macOS平台上的资源文件有关。让我们深入了解一下相关的知识点。 .plist,全称Property List(属性列表),是Apple操作系统中用于存储配置信息或...