- 浏览: 623954 次
文章分类
最新评论
-
q781253433:
qin ~.求demo看看~
Android之Widget -
zhongyuanceshi:
博主,没看到你的例子的Demo,共享下
Android之Widget
Bundle就是一个内部结构按照标准规则组织的特殊目录,理解为directory即可;
IOS的应用都是通过bundle进行封装的,对应的bundle类型是Application类型,平时我们通过XCode编译出来的Target(即我们开发的应用),其实就是一个Application类型bundle,即一个文件夹!但是Finder会把这个bundle当做一个文件显示给我们,因为这个bundle自身也是一个package,而Mac系统会把所有的package当做一个文件来对待,显示给用户,从而防止用户误操作导致程序文件损坏或丢失。
bundle对iOS开发者来讲,最大的方便就是可以非常简单地让自己的应用国际化,在不同的语言不同的地区,加载不同的资源文件,显示不同的语言文字,而实现这些只需要我们严格按照bundle的要求进行资源文件的存放即可,而不需要写大量代码判断地区语言。遵循的方法也很简单,只需要我们创建对应的"本地化文件夹"即可,例如我们要同时让图片"pic.png"在中文和英文下显示不同的内容,只需要创建两个本地化文件夹zh.lproj和en.lproj,分别放入同名但内容不同的"pic.png"即可。
bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBundle.
我们的程序是一个bundle. 在Finder中,一个应用程序看上去和其他文件没有什么区别. 但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程序的main bundle
代码:
NSBundle *myBundle = [NSBundle mainBundle];
一般我们通过这种方法来得到bundle.如果你需要其他目录的资源,可以指定路径来取得bundle
// Extension is optional
NSString *path = [goodBundle pathForImageResource:@"Mom"];
NSImage *momPhoto = [[NSImage alloc] initWithContentsOfFile:path];
bundle中可以包含一个库. 如果我们从库得到一个class, bundle会连接库,并查找该类:
Class newClass = [goodBundle classNamed:@"Rover"];
id newInstance = [[newClass alloc] init];
如果不知到class名,也可以通过查找主要类来取得
Class aClass = [goodBundle principalClass];
id anInstance = [[aClass alloc] init];
可以看到, NSBundle有很多的用途.在这章中, NSBundle负责(在后台)加载nib文件. 我们也可以不通过NSWindowController来加载nib文件,
直接使用NSBundle:
BOOL successful = [NSBundle loadNibNamed:@"About" owner:someObject];
注意噢, 我们指定了一个对象someObject作为nib的File”s Owner
获取XML文件
NSString *filePath = [[NSBundle mainBundle] pathForResouse:@"re"
ofType:@"xml"];
NSData *data = [[NSData alloc] initWithContentsOfFile:filePath];
获取属性列表
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle
mainBundle] pathForResource:@"ViewControllers" ofType:@"plist"]];
//bundle实际上是一个目录,其中包含了程序会使用的资源,包括:图像,声音,编译好的代码,nib文件等,cocoa中对应的类是NSBundle Carbon中对应的是CFBundleRef
NSBundle *bundle = [NSBundle mainBundle]; NSLog(@"mainBundlePath:%@",[bundle bundlePath]); //使用bundle类可以访问该项目中的所有资源,mainBundle对应的是该项目的根目录,想要获取其中的资源,需要使用对应的方法 //如果该路径为NULL,说明该路径下找不到指定的资源 一个路径对应着一个资源文件,然后根据path或者url把文件读入到内存里 NSString *imagePah = [bundle pathForResource:@"button_bg" ofType:@"png"]; NSLog(@"imagePath:%@",imagePah); UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePah]; NSLog(@"imageDescription:%@",[image description]); NSLog(@"image size:%d",[image size]);
NSBundle *mainBundle = [NSBundle mainBundle]; NSString *path = [mainBundle pathForResource:@"副本221" ofType:@"png"inDirectory:@"未命名文件夹"]; BOOL flag = NO; NSLog(@"%@",path); flag = [[NSFileManager defaultManager] fileExistsAtPath:path]; NSLog(@"%@",mainBundle.bundlePath); // NSLog(@"%@",mainBundle.bundleURL); // NSLog(@"%@",mainBundle.infoDictionary); // NSLog(@"%@",[mainBundle.infoDictionary objectForKey:@"CFBundleVersion"]); NSLog(@"%@", [mainBundle pathsForResourcesOfType:@"png" inDirectory:@"未命名文件夹"]);
加载视图: NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableFooterView" owner:self options:nil]; TableFooterView *footerView = (TableFooterView *)[nib objectAtIndex:0];
发表评论
-
tableview FPS 优化
2016-06-28 11:26 1现状: 在滚动tableview ... -
iOS 开发者中的公司账号与个人账号之间有什么区别?
2016-06-23 14:54 499原文:http://www.zhihu.com/questio ... -
strong weak copy
2016-04-24 21:01 629copy的使用 如果是mutable,则co ... -
App性能优化思考
2015-10-13 15:24 906一个app的数据 启动时间 crash率 每个 ... -
iOS之手势操作
2015-01-19 10:24 780手势学习: https://developer. ... -
iOS之网络学习
2015-01-19 10:23 641网络学习: http://nshipster.c ... -
nib文件的加载过程
2014-10-24 13:39 790参考:http://blog.csdn.net/nokiax ... -
NSCoder&&NSCoding使用
2014-10-24 11:38 756NScoder和NScoding的作用是将自定义的类的对象持 ... -
Autolayout学习
2014-10-20 16:32 743参考: http://my.oschina. ... -
IOS开发屏幕适配总结
2014-10-20 16:28 446面对4个分辨率的iPhone,建议使用Auto Layou ... -
Size Classes学习
2014-10-20 16:27 763Size Classes介绍:http://blog.su ... -
iPhone6分辨率以及适配
2014-10-20 11:36 1306对iPhone6适配的两种方式:1、兼容模式 这种模式 ... -
Core Animation简介
2014-10-19 15:33 778在iOS中,整个view都是直接构建在Core Animat ... -
Charles使用——HTTP代理服务器
2014-10-19 15:32 2052* HTTP代理服务器,监听8888端口 * HTTP监视 ... -
《精选》开发中遇到的问题总结
2014-10-19 15:31 10071、新浪微博的使用 使用的事umeng的SDK来调用微信、 ... -
使用JavaScript给UIWebView中的内容注入CSS
2014-10-06 21:26 1155NSString *filePath = [[NSB ... -
UIViewde的属性edgesForExtendedLayout
2014-09-26 17:56 692edgesForExtendedLayout 指定边缘 ... -
UIView的属性autoresizingMask
2014-09-26 17:36 763在 UIView 中有一个autoresizingMask ... -
UIWebView获取内容的高度
2014-09-24 13:13 743// 第一种方法 ... -
storyboard的总结
2014-09-02 11:30 733两个基本概念 scene 就是一个视图控制器 se ...
相关推荐
NSBundle *bundle = [NSBundle bundleWithPath:@"/path/to/your/bundle"]; ``` 2. **NSBundle的生命周期**: - `NSBundle`的生命周期与应用的生命周期紧密相关。主NSBundle在应用启动时被加载,并在整个应用的...
NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"ResourcesBundle" ofType:@"bundle"]]; UIImage *image = [UIImage imageWithContentsOfFile:[bundle pathForResource:@...
在这个主题中,我们将深入探讨如何使用NSBundle来读取图片、plist文件以及txt文件。 首先,我们来看一下NSBundle的基本用法。NSBundle对象通常代表一个应用程序或扩展的资源包。你可以通过`[NSBundle mainBundle]`...
TARGET_INTERFACE_BUILDER NSBundle *bundle = [ NSBundle mainBundle ];# else NSBundle *bundle = [ NSBundle bundleForClass: [ self class ]];# endif// change nib named string if your xib name not the same...
NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier]; ``` 这段代码会返回当前运行的应用的BUNDLEID。 在Swift中,我们可以使用相同的`NSBundle`类,但需要转换为Swift语法: ```swift let bundleID =...
在iOS开发中,`NSBundle` 和 `NSURL` 都是用来处理资源文件的类,但它们在功能和使用场景上有所不同。这篇教程将帮助你理解这两个类的区别,并展示如何使用它们来读取和写入文件。 首先,`NSBundle`(Bundle)是iOS...
1:获取bundle Id信息:[[NSBundle mainBundle]bundleIdentifier]; 2:获取版本号:[[[NSBundle mainBundle]infoDictionary] objectForKey:@”CFBundleShortVersionString”]; 3:获取build号:[[[NSBundle ...
3. 使用NSBundle或Swift的Bundle API读取.bundle内的资源。 使用静态库和.bundle资源包的好处包括: - 代码模块化:将常用功能封装为库,方便复用和维护。 - 保护源码:对外提供API而不暴露具体实现。 - 分享代码库...
1. **加载Bundle中的资源**: 通过NSBundle类提供的方法,可以方便地获取Bundle中的文件路径,例如`[[NSBundle mainBundle] pathForResource:@"filename" ofType:@"extension"]`。 2. **处理本地化**: 使用`...
在给定的实例代码中,展示了如何使用NSBundle加载一个名为"fileName"的JavaScript文件,文件类型为"js": ```objc - (NSString *)loadJsFile:(NSString *)fileName Type:(NSString *)type { // 使用NSBundle的...
在代码中,可以通过NSBundle对象来访问.bundle内的资源,这样可以使代码更加模块化,便于资源的更新和维护。 脚本打包SDK是一项重要技能,尤其对于大型项目和第三方服务集成而言。脚本打包可以自动化构建过程,包括...
在代码中,我们通常使用`NSBundle`类来访问.bundle内的资源。 对于马甲包的修改,可能涉及到替换.bundle中的图片,步骤如下: 1. 将新的图片文件放入相应马甲包的.bundle文件夹。 2. 确保新图片的名称和原有图片...
return NSLocalizedString(rawValue, tableName: "Animal", bundle: NSBundle.mainBundle(), value: "\(rawValue)", comment: "") } static func keys() -> [String] { return ["CAT", "DOG...
[NSBundle loadNibNamed:@"MyView" owner:self options:nil]; } ``` 或 ```swift @objc class MyClass: UIView { override init(frame: CGRect) { super.init(frame: frame) commonInit() } required ...
NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle pathForResource:@"your_pdf_file_name" ofType:@"pdf"]; NSURL *url = [NSURL fileURLWithPath:path]; ``` 这里,"your_pdf_file_name"应替换...
NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle pathForResource:fileName ofType:@"png"]; // 根据需要支持不同的图片格式 NSData *data = [NSData dataWithContentsOfFile:path options:...
iOS软件设计最佳实践 本文的目的是帮助您为iOS应用程序...- ( id )initWithNibName:( NSString *)nibNameOrNil bundle:( NSBundle *)nibBundleOrNil { if ((self = [ super initWithNibName: nibNameOrNil bundle: n