`
dcj3sjt126com
  • 浏览: 1868086 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IOS的Bundle资源束制作

    博客分类:
  • IOS
阅读更多

bundle制作其实是前面制作静态库的一个衍生。

在静态库的制作中,很多时候我们的静态库也是带着文件,图片和多媒体资源的。

若只是直接加入到项目中也是可以,但是,考虑到方便管理(方便插件使用者的管理),我们希望把插件的资源文件打成一个包来管理。

比如,我们项目中有用到的银联支付插件。

这样我们直接添加xxxx.bundle文件到项目中就可以,这样在以后如果要删除的话直接删除一个xxx.bundle文件就行了。

当然有人也会说,那我直接在项目中新建一个group来管理也是一样的容易。

此刻,我只能很装逼的说一句:这样,显得专业点么~。

你看three20啊,银联啊等等。整体项目目录相对看起来简约点。

 

bundle的制作。

1.新建一个文件夹,然后将文件夹命名修改你要的文件夹名,并且加上后缀:xxx.bundle。

然后你就会看到文件夹变成了一个我们常见的bundle样式的文件夹。

 

2.加入文件资源,此时为了方便管理,我们最好现在里面新建3种资源的文件夹

当然了,不创建也没关系,但是这个images文件夹最好创建,因为,我们会把所有的图片资源放在这里来方便管理。

然后添加点图片到images中。

 

3.把bundle文件加入到项目中

 

4.读取和使用文件。

 

  1. UILabel *la = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 50, 50)];  
  2. la.text = @"陈凯";  
  3. NSString *image_url = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"nono.bundle/images/android.png"];  
  4. la.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:image_url]];  

 

此时,因为以前我们获取UIImage对象大部分都是直接使用的api为:

 

[UIImage imageNamed:@"android.png"]

方法其实也是通过相对路径给我们找到了图片资源。

但是在我们自己制作的bundle文件夹的图片资源则不能使用该方法来找到了。

我们每次指定图片需要传入一个很长的地址,觉得比较麻烦。但是我们会发现,图片都是在xxx.bundle/images下面。

那么我们也可以使用宏或是类别来定义一个方法来简单到和[UIImage imageNamed:@"android.png"]一样。只需一个文件名就行了。

宏的表现可以参考three20下的

 

  1. TTIMAGE(@"bundle://Three20.bundle/images/backIcon.png")  

 

返回的就是一个image对象。

three20框架中其实是使用了scheme的思想,bundle://和document;//来加载不同文件夹下的资源。

加载自定义bundle文件夹下的图片最后就是根据

先获取应用的绝对路径 

    mainbundle_path = [NSBundlemainBundleresourcePath] ;

然后截取了bundle://后面的path 和mainbundle_path组装成最后的地址。

 

对于我们,简单的实现可以直接使用类别

 

  1. -(UIImage*) imagesNamedFromCustomBundle:(NSString *)name  
  2. {  
  3.     NSString *main_images_dir_path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"nono.bundle/images"];  
  4. //    NSAssert(main_images_dir_path, @"main_images_dir_path is null");  
  5.     NSString *image_path = [main_images_dir_path stringByAppendingPathComponent:name];  
  6.     return [UIImage imageWithContentsOfFile:image_path];  
  7. }  


创建一个UIImage的类别,添加这个扩展的方法。

 

 

end

 

转自:http://blog.csdn.net/nono_love_lilith/article/details/8529890

 

分享到:
评论

相关推荐

    iOS Framework制作打包教程

    iOS Framework制作和打包是iOS开发中的一个重要环节,它能够让你将重复使用的代码封装成一个模块化的组件,从而简化开发流程,提高开发效率。本文将详细介绍iOS Framework的创建和打包过程。 首先,我们需要理解...

    IOS应用源码之【应用】iOS framework 制作教程【非静态包】.rar

    本教程将详细讲解如何制作非静态的iOS Framework,这是一种动态链接库,允许在运行时加载代码,提高了应用的灵活性。 一、iOS Framework类型 iOS Framework主要有两种类型:静态库(Static Library)和动态库...

    Xcode制作包含xib等资源的静态库

    Xcode制作包含xib等资源的静态库的流程如下: 1. 创建静态库工程: 在Xcode中新建一个项目,选择“iOS”->“Framework & Library”->“Cocoa Touch Static Library”。点击“Next”,输入项目名称和位置,创建新...

    IOS 上面播放 gif 动画的例子

    在iOS平台上,播放GIF动画是一项常见的需求,特别是在制作各种社交、娱乐或教育应用时。本文将详细讲解如何在iOS应用中实现GIF动画的播放,并以“AnimatedGifExample”为例,阐述相关的编程知识点。 首先,我们需要...

    IOS应用源码——UIImage+Sprite for iOS.rar

    通过阅读和研究源代码,我们可以学习如何有效地处理图像资源,以及如何利用iOS系统提供的图形工具来实现复杂的图像操作,比如精灵动画。同时,这也是一个了解和实践Objective-C或Swift编程语言的好机会,因为这些...

    Unity制作跑酷游戏,内含源码及资源

    本项目“Unity制作跑酷游戏,内含源码及资源”提供了一个完整的跑酷游戏实例,对于想要学习Unity游戏开发或者对跑酷游戏机制感兴趣的开发者来说,这是一个极好的学习资料。 首先,我们要理解跑酷游戏的基本元素。...

    教你设置 ,音频,以及才晃动检测

    标题《教你设置,音频,以及晃动检测》和描述《该文章翻译自iOS in Practice 一书,资源来自Cocoachina。通过制作一个上架应用TimeDown教你设置,音频,以及晃动检测。》暗示了文章内容主要围绕iOS开发实践中的三个...

    仿ios的SwitchButton 非图片实现

    在Android开发中,有时我们希望实现与iOS类似的开关按钮(SwitchButton),但不依赖于图片资源,以提高应用性能和自定义能力。本教程将详细介绍如何在Android中使用纯代码来实现一个仿iOS风格的滑动开关,无需依赖...

    iOS制作framework静态库图文教程

    在iOS开发中,有时我们需要将一组相关功能封装成一个库,以便在...此外,你还可以参考相关文章了解更多关于`.a`静态库、`.framework`静态库以及`.bundle`资源包的创建和使用方法,以及静态库和动态库的区别和使用场景。

    iOS APP提交上架最新流程 - 简书1

    这将包含你的应用代码、资源和证书信息,用于提交到App Store Connect。 5. **在App Store Connect提交** 登录App Store Connect(https://appstoreconnect.apple.com),创建新的App记录。填写App的元数据,包括...

    IOS 静态库和Framework区别

    2. 资源处理:图片等资源通常放在.bundle文件中,便于管理和分发。 3. Category问题:静态库中的Category可能会遇到运行时错误,解决方案是在使用静态库的工程中添加-ObjC选项。 4. 头文件管理:如果静态库的头文件...

    cocoscreater推箱子.rar

    它支持JavaScript和TypeScript编程,提供了直观的可视化编辑界面,让开发者能够高效地进行游戏场景设计、动画制作和逻辑编写。 二、JavaScript基础 JavaScript是CocosCreator的主要脚本语言,用于处理游戏逻辑。JS...

    利用WebView制作简单的pdf.doc 阅读器源码

    以下是利用WebView制作PDF阅读器的关键步骤: 1. **导入WebKit框架**:在Xcode项目中,你需要导入WebKit框架,这样你才能使用WebView。在Swift中,可以通过`import WebKit`来导入。 2. **创建WebView**:在你的...

    觅字江湖——使用Unity制作的一款游戏

    Unity支持Asset Bundle功能,允许开发者将游戏资源打包成独立的文件,在运行时按需加载,降低初始加载时间。《觅字江湖》可能就利用了这一特性,根据游戏需求动态加载不同的资源,提高用户体验。 音效和音乐的集成...

    cocos2d框架.pdf

    - Bundle(资源包):作为一个资源容器,它允许加载和释放资源,提供了一种组织资源的方式。 - Cache(缓存):用于缓存游戏中频繁使用的资源数据。 - AssetManager(资源管理器):管理资源的行为和信息,比如...

    关于Unity手游更新的思考.rar

    这主要通过Asset Bundle实现,Asset Bundle是Unity的一种资源打包方式,可以将游戏的模型、纹理、音频等资源分离打包,然后在运行时动态加载。当游戏需要更新时,服务器只需上传新的Asset Bundle,客户端则根据需求...

    Unity3D游戏开发标准教程-PPT课件上

    - Asset Bundle:动态加载和卸载资源,优化游戏性能 10. **UI系统** - Canvas:UI的基础元素 - Text、Image、Button等UI组件的使用 - UI事件监听与响应 - Canvas Group和RectTransform的调整 11. **场景管理*...

    emoji表情包

    本资源是一个“emoji表情包”,其中包含了.plist文件,这通常与iOS或macOS平台上的资源文件有关。让我们深入了解一下相关的知识点。 .plist,全称Property List(属性列表),是Apple操作系统中用于存储配置信息或...

Global site tag (gtag.js) - Google Analytics