- 浏览: 516364 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
本文想简单介绍一下NSBundle读取图片到视图上,读取plist文件,读取txt文件显示在lable上;
关于bundle作用在网上参考了两个博客,介绍如下:
bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBundle.
我们的程序是一个bundle. 在Finder中,一个应用程序看上去和其他文件没有什么区别. 但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程序的main bundle
bundle中的有些资源可以本地化.例如,对于foo.nib,我们可以有两个版本: 一个针对英语用户,一个针对法语用户. 在bundle中就会有两个子目录:English.lproj和French.lproj,我们把各自版本的foo.nib文件放到其中. 当程序需要加载foo.nib文件时,bundle会自动根据所设置的语言来加载.
NSBundle束,是一种特定的文件类型,其中的内容遵循特定的结构。
NSBundle的一个主要作用是 获取Resources文件夹中的资源。
NSBundle 对象代表了文件系统中的一个位置,这个位置存放的是我们程序的代码和资源。NSBundel 对象同时本地化程序资源,动态加载和卸载可执行代码,及本地化支持。有三种束,分别是面向应用程的、面向框架的和面向插件的;
以上摘自http://blog.csdn.net/startexcel/article/details/7099234
http://kingloveny10000.blog.163.com/blog/static/20577304120123163215673/
1.创建一个新工程叫NSBundleDemo; File->New->Project ->single View Application -> next
[img]
[/img]
获取图片到view视图上,首先向工程中拖动一张test.png照片,保证Copy items into destination group's folder.被选上,意思讲图片复制到工程里,如果这一项没被选上相当于对图片的一个引用,当工程被拷贝到另一个环境下,出现文件缺失,就不能正常运行;
// 定义一个NSBundle对象获取得到应用程序的main bundle
NSBundle *mainBundle = [NSBundle mainBundle];
// 用对象mainBundle获取图片路径
NSString *imagePath = [mainBundlepathForResource:@"test"ofType:@"png"];
完整代码:
注意我设置的frame坐标,并不是全屏显示;效果截图:
[img]
[/img]
这是mainBundle获取imagepath的路径:imagepath:/Users/rjxy/Library/Application Support/iPhone Simulator/5.1/Applications/C32F9BE2-B07C-4D83-A1CB-7D10D074773E/NSBundleDemo.app/test.png
2.mainBundle读取plist文件,这个比较简单直接上代码吧
补充下,key4是testInfo.plist文件中对应的一个键值;testInfo.plist文件是我自己添加上去的,添加也可以直接拖动一个plist文件到工程中,也可以在工程中新建一个,具体方法可参照上面给出的博客地址了解一下;
3.mainBundle读取txt文件,然后把它显示在lable上,当然在此之前需要添加一个有内容txt文件;读取txt文件和上两个例子一样,再次想说一下如何显示在label上,如果txt中内容太多需要换行的操作;
(1)label.lineBreakMode =UILineBreakModeCharacterWrap;是设置换行的时候以什么为单位,此处设置是以字符为单位,还有一单词文单位的,UILineBreakMode定义在一个枚举类型中,想深入了解如何换行,可以更换UILineBreakMode中枚举种类进行测试下,此处不做测试;
typedef enum {
UILineBreakModeWordWrap = 0,
UILineBreakModeCharacterWrap,
UILineBreakModeClip,
UILineBreakModeHeadTruncation,
UILineBreakModeTailTruncation,
UILineBreakModeMiddleTruncation,
} UILineBreakMode;
UILineBreakModeWordWrap = 0,
以单词为单位换行,以单位为单位截断。
UILineBreakModeCharacterWrap,
以字符为单位换行,以字符为单位截断。
UILineBreakModeClip,
以单词为单位换行。以字符为单位截断。
UILineBreakModeHeadTruncation,
以单词为单位换行。如果是单行,则开始部分有省略号。如果是多行,则中间有省略号,省略号后面有4个字符。
UILineBreakModeTailTruncation,
以单词为单位换行。无论是单行还是多行,都是末尾有省略号。
UILineBreakModeMiddleTruncation,
以单词为单位换行。无论是单行还是多行,都是中间有省略号,省略号后面只有2个字符。
(2)label.numberOfLines =0;可以自动适应显示,如果等于1显示一行,对于10显示10行,但是label只是一个静态标签,如果你的txt文件中内容超多超多,不可能全部显示出来,最多显示view视图大小;假如说我们要想把可多可多的txt文件类容显示完怎么办呢,我们可以先在view上加一个scroll view视图,他是一个可以上下左右滚动的视图,然后设置把label设置大一些,放在scroll view之上;不过我们唱显示比较多的文字时并不是显示在label上,而是一个专门用于显示文字的Text viewk,他可以实现上下滚动显示所有文字内容;
4.viewDidLoad代码:
5.运行结果截图,txt中内容并未显示完全:
[img]
[/img]
项目源码:
关于bundle作用在网上参考了两个博客,介绍如下:
bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle,cocoa提供了类NSBundle.
我们的程序是一个bundle. 在Finder中,一个应用程序看上去和其他文件没有什么区别. 但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程序的main bundle
bundle中的有些资源可以本地化.例如,对于foo.nib,我们可以有两个版本: 一个针对英语用户,一个针对法语用户. 在bundle中就会有两个子目录:English.lproj和French.lproj,我们把各自版本的foo.nib文件放到其中. 当程序需要加载foo.nib文件时,bundle会自动根据所设置的语言来加载.
NSBundle束,是一种特定的文件类型,其中的内容遵循特定的结构。
NSBundle的一个主要作用是 获取Resources文件夹中的资源。
NSBundle 对象代表了文件系统中的一个位置,这个位置存放的是我们程序的代码和资源。NSBundel 对象同时本地化程序资源,动态加载和卸载可执行代码,及本地化支持。有三种束,分别是面向应用程的、面向框架的和面向插件的;
以上摘自http://blog.csdn.net/startexcel/article/details/7099234
http://kingloveny10000.blog.163.com/blog/static/20577304120123163215673/
1.创建一个新工程叫NSBundleDemo; File->New->Project ->single View Application -> next
[img]
[/img]
获取图片到view视图上,首先向工程中拖动一张test.png照片,保证Copy items into destination group's folder.被选上,意思讲图片复制到工程里,如果这一项没被选上相当于对图片的一个引用,当工程被拷贝到另一个环境下,出现文件缺失,就不能正常运行;
// 定义一个NSBundle对象获取得到应用程序的main bundle
NSBundle *mainBundle = [NSBundle mainBundle];
// 用对象mainBundle获取图片路径
NSString *imagePath = [mainBundlepathForResource:@"test"ofType:@"png"];
完整代码:
// 定义一个NSBundle对象获取得到应用程序的main bundle NSBundle *mainBundle = [NSBundle mainBundle]; // 用对象mainBundle获取图片路径 NSString *imagePath = [mainBundle pathForResource:@"test" ofType:@"png"]; UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePath]; NSLog(@"imagepath:%@",imagePath); UIImageView *imageView = [[UIImageView alloc]initWithImage:image]; CGRect frame = CGRectMake(10, 10, 300, 440); imageView.frame=frame; [self.view addSubview:imageView];
注意我设置的frame坐标,并不是全屏显示;效果截图:
[img]
[/img]
这是mainBundle获取imagepath的路径:imagepath:/Users/rjxy/Library/Application Support/iPhone Simulator/5.1/Applications/C32F9BE2-B07C-4D83-A1CB-7D10D074773E/NSBundleDemo.app/test.png
2.mainBundle读取plist文件,这个比较简单直接上代码吧
// 获取plist文件路径 NSString *infoPlist = [[NSBundle mainBundle] pathForResource:@"testInfo" ofType:@"plist"]; // 将testInfo.plist文件内容读取到字典中 NSDictionary *dic = [[NSDictionary alloc] initWithContentsOfFile:infoPlist]; // 打印dic中所有内容 NSLog(@"%@",dic); // 打印键值为key4的值 NSLog(@"key4=%@",[dic objectForKey:@"key4"]);
补充下,key4是testInfo.plist文件中对应的一个键值;testInfo.plist文件是我自己添加上去的,添加也可以直接拖动一个plist文件到工程中,也可以在工程中新建一个,具体方法可参照上面给出的博客地址了解一下;
3.mainBundle读取txt文件,然后把它显示在lable上,当然在此之前需要添加一个有内容txt文件;读取txt文件和上两个例子一样,再次想说一下如何显示在label上,如果txt中内容太多需要换行的操作;
// 获取txt文件路径 NSString *txtPath = [mainBundle pathForResource:@"test" ofType:@"txt"]; // 将txt到string对象中,编码类型为NSUTF8StringEncoding NSString *string = [[NSString alloc] initWithContentsOfFile:txtPath encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@",string); CGRect labelframe = CGRectMake(10, 10, 300, 440); UILabel *label = [[UILabel alloc] initWithFrame:labelframe]; // 将sring内容赋给lable的text属性 label.text=string; // 背景颜色设置成透明色 label.backgroundColor = [UIColor clearColor]; // 字体颜色设置成红色 label.textColor= [UIColor redColor]; // 设置lable文字左对齐显示 label.textAlignment = UITextAlignmentLeft; // 自动这行设置 label.lineBreakMode = UILineBreakModeCharacterWrap; //等于0表示可根据具实际情况自动变动 label.numberOfLines = 0; [self.view addSubview:label]; }
(1)label.lineBreakMode =UILineBreakModeCharacterWrap;是设置换行的时候以什么为单位,此处设置是以字符为单位,还有一单词文单位的,UILineBreakMode定义在一个枚举类型中,想深入了解如何换行,可以更换UILineBreakMode中枚举种类进行测试下,此处不做测试;
typedef enum {
UILineBreakModeWordWrap = 0,
UILineBreakModeCharacterWrap,
UILineBreakModeClip,
UILineBreakModeHeadTruncation,
UILineBreakModeTailTruncation,
UILineBreakModeMiddleTruncation,
} UILineBreakMode;
UILineBreakModeWordWrap = 0,
以单词为单位换行,以单位为单位截断。
UILineBreakModeCharacterWrap,
以字符为单位换行,以字符为单位截断。
UILineBreakModeClip,
以单词为单位换行。以字符为单位截断。
UILineBreakModeHeadTruncation,
以单词为单位换行。如果是单行,则开始部分有省略号。如果是多行,则中间有省略号,省略号后面有4个字符。
UILineBreakModeTailTruncation,
以单词为单位换行。无论是单行还是多行,都是末尾有省略号。
UILineBreakModeMiddleTruncation,
以单词为单位换行。无论是单行还是多行,都是中间有省略号,省略号后面只有2个字符。
(2)label.numberOfLines =0;可以自动适应显示,如果等于1显示一行,对于10显示10行,但是label只是一个静态标签,如果你的txt文件中内容超多超多,不可能全部显示出来,最多显示view视图大小;假如说我们要想把可多可多的txt文件类容显示完怎么办呢,我们可以先在view上加一个scroll view视图,他是一个可以上下左右滚动的视图,然后设置把label设置大一些,放在scroll view之上;不过我们唱显示比较多的文字时并不是显示在label上,而是一个专门用于显示文字的Text viewk,他可以实现上下滚动显示所有文字内容;
4.viewDidLoad代码:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // 定义一个NSBundle对象获取得到应用程序的main bundle NSBundle *mainBundle = [NSBundle mainBundle]; /* // 用对象mainBundle获取图片路径 NSString *imagePath = [mainBundle pathForResource:@"test" ofType:@"png"]; UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePath]; NSLog(@"imagepath:%@",imagePath); UIImageView *imageView = [[UIImageView alloc]initWithImage:image]; CGRect frame = CGRectMake(10, 10, 300, 440); imageView.frame=frame; [self.view addSubview:imageView]; */ // 获取plist文件路径 NSString *infoPlist = [[NSBundle mainBundle] pathForResource:@"testInfo" ofType:@"plist"]; // 将testInfo.plist文件内容读取到字典中 NSDictionary *dic = [[NSDictionary alloc] initWithContentsOfFile:infoPlist]; // 打印dic中所有内容 NSLog(@"%@",dic); // 打印键值为key4的值 NSLog(@"key4=%@",[dic objectForKey:@"key4"]); // 获取txt文件路径 NSString *txtPath = [mainBundle pathForResource:@"test" ofType:@"txt"]; // 将txt到string对象中,编码类型为NSUTF8StringEncoding NSString *string = [[NSString alloc] initWithContentsOfFile:txtPath encoding:NSUTF8StringEncoding error:nil]; NSLog(@"%@",string); CGRect labelframe = CGRectMake(10, 10, 300, 440); UILabel *label = [[UILabel alloc] initWithFrame:labelframe]; // 将sring内容赋给lable的text属性 label.text=string; // 背景颜色设置成透明色 label.backgroundColor = [UIColor clearColor]; // 字体颜色设置成红色 label.textColor= [UIColor redColor]; // 设置lable文字左对齐显示 label.textAlignment = UITextAlignmentLeft; // 自动这行设置 label.lineBreakMode = UILineBreakModeCharacterWrap; //等于0表示可根据具实际情况自动变动 label.numberOfLines = 0; [self.view addSubview:label]; }
5.运行结果截图,txt中内容并未显示完全:
[img]
[/img]
项目源码:
发表评论
-
新风作浪博客学习(十九)在iOS虚拟键盘上添加动态隐藏按钮
2013-06-08 09:19 815为了给用户比较良好的交付,想在键盘上添加一个按钮,实时根据键盘 ... -
新风作浪博客学习(十八)openURL的使用(iOS调用系统电话、浏览器、地图、邮件等) .
2013-06-08 09:19 932今天遇见一行代码实现打开一个网页,比起印象里的UIWebVie ... -
新风作浪博客学习(十七)UIImageView响应点击事件 .
2013-06-08 09:19 666有时候会遇到点击一张图片,然后让这张图片触发一个事件,或者是跳 ... -
新风作浪博客学习(十六)Navigation + Tab Bar 常用组合框架 .
2013-06-07 08:50 1193看到很多项目中都采用的是Navigation加Tab Bar组 ... -
新风作浪博客学习(十五)google地图定位小Demo .
2013-06-07 08:50 1057[img][/img]今天写的是一个简单功能的google地图 ... -
新风作浪博客学习(十四)怎样向iPhone模拟器中添加图片 .
2013-06-07 08:50 741在我们做项目中可能需要使用图库,模拟器是有图库的,但是如何像其 ... -
新风作浪博客学习(十三)表视图的分组分区和索引分区 .
2013-06-07 08:50 744本次实现的是表视图的分区和索引,代码和前面都差不多,主要还是代 ... -
新风作浪博客学习(十二)代码实现UITableViewCell表视图单元定制 .
2013-06-07 08:49 932通常情况下我们会希望单元格UITableViewCell显示自 ... -
新风作浪博客学习(十一)UITableViewCell的标记、移动、删除、插入 .
2013-06-06 09:15 1059这篇文章是建立在 代码实现 UITableView与UITa ... -
新风作浪博客学习(十)代码实现 UITableView与UITableViewCell .
2013-06-06 09:14 1113我们常用的表格类视图就是用 UITableView与UITab ... -
新风作浪博客学习(九)两个UIPickerView控件间的数据依赖 .
2013-06-06 09:14 1039本篇实现功能是两个选取器的关联操作,滚动第一个滚轮第二个滚 ... -
新风作浪博客学习(八)代码实现UIPickerView .
2013-06-06 09:14 1240先说一下当个组件选取器,我们创建一个数组NSAray来保存选取 ... -
新风作浪博客学习(七)代码 实现UIDatePicker控件 和 Tab Bar 视图切换 .
2013-06-06 09:15 1073感觉代码写控件都一个理,先在ViewDidLoad中创建控件对 ... -
新风作浪博客学习(六)ios 视图切换翻页效果 .
2013-06-05 11:18 1024本文写的是视图切换,涉及到的内容有 1.实现代码添加Navi ... -
新风作浪博客学习(五)代码实现UISlider 和 UISwitch .
2013-02-18 09:15 1074本次实现的UISlider和UISwi ... -
新风作浪博客学习(四)把plist里数据显示在textField上 .
2013-02-18 09:15 885在代码实现Lable 、textFie ... -
新风作浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
2013-02-18 09:15 1137今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是 ... -
新风作浪博客学习(一)plist文件读写操作
2013-02-18 09:14 1299文件plist 全名Property List,属性列表文件, ... -
GCDiscreetNotificationView提示视图
2013-06-05 11:17 525先看一下效果图: [img] ... -
iphone开发之适配iphone5
2013-06-05 11:15 1010iphone5出来了,从不用适配的我们也要像android一样 ...
相关推荐
http://blog.csdn.net/duxinfeng2010/article/category/1155790 博客有详细介绍
在项目的工程中添加一个文件,本例程添加的是aa.txt,文件的内容为百度: www.baidu.com,现在要使用NSBundle和NSURL分别去获取内容,代码如下: // 读取文件内容 // 方法1:按照文件路径读取 NSString *pathBundle ...
Apple NSBundle 使用说明文档
NSArray *ary = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ProvinceCityDistrict" ofType:@"plist"]]; for (int i = 0; i ; i ++) { NSDictionary *province = ary[i]; for...
NSString *iOSDeviceModelsPath = [[NSBundle mainBundle] pathForResource:@"iOSDeviceModelMapping" ofType:@"plist"]; NSDictionary *iOSDevices = [NSDictionary dictionaryWithContentsOfFile:...
Info.plist文件实际上是苹果预定义schema的XML文件。 为了构建一个设备相关的健,你在健的后面要加上~iphone或者~ipad。 常用字段: 1.获取版本信息: NSDictionary*infoDic = [[NSBundle mainBundle] infoDictionary]...
对于许多朋友来说 NSBundle比较陌生 本文详细介绍了bundle的使用,相信你一看便知 有iphone开发 兴趣的朋友加我qq 1748283579 注明csdn 加上自己工作经验,少于半年iphone开发经验的勿扰。。
NSDictionary*infoDic = [[NSBundle mainBundle] infoDictionary];Info.plist NSAppTr
// 读取gif图片数据 UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,200,200)]; [self.view addSubview:webView]; NSString *path = [[NSBundle mainBundle] pathForResource
注意:.m文件小了一个方法 ,下载下来把它复制进去 /** 加载gif动画 */ +(UIImage*)loadGifWithImageName:(NSString *)name{ NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"gif"]; ...
如果你调用这个方法,并传递的两个参数为空(nil),然后类会调用-loadView去读取一个名字和你的UIViewController名字相同的nib文件,来初始化自身。如果没有这样的nib文件,你必须调用-setView:来设置一个self.view...
文件目录的访问 最简单的:(由于是沙盒关系,没有文件夹概念的) 代码如下: UIImage* image = [UIImage imageNamed:@”11.png”]; 这个已经是相对app里面打包好的路径,不需要额外添加路径。 还有一种就是需要...
把webp文件下的文件导入到工程,同时工程依赖SDWebImage第三方框架 导入头文件#import“ UIImage + WebP.h” @interface UIImage(WebP) (nullable UIImage *)sd_imageWithWebPData:(nullable NSData *)data...
Github下载不了/下载慢可以...插入本地广告图片,直接放在工程目录中,不要放在资产里面,XHLaunchAd不是通过图片名称:读取图片,而是通过[NSBundle mainBundle]路径...。的方式读取本地图片的(此处涉及到内存优化)
DPMultiPartObjC 使用multiPart类目标C上传视频,图像和其他文件(pdf,doc,..) 对于Swift : 步骤1 :-将multiPart.h和multiPart.m文件复制并粘贴到您的项目中第2步:-用法 # import " multiPart.h " NSString *...
react-native-app-info 安装 $ npm install react-native-app-info --save $ rnpm link react-native-app-info 用法 var AppInfo = require('react-native-app-info'); console.log("应用版本号",AppInfo....
Version版本号 Version在plist文件中的key是“CFBundleShortVersionString” Key 都在字典 [[NSBundle mainBundle] infoDictionary] 中。 ###Install 选中项目的target,点击“Build Phases“ 点击右下角的”Add ...
这是Thomas Moore的PreferenceLoader项目的直接替代品。 我个人认为这是必要的,因为我不喜欢现有的PreferenceLoader有很... 从包计算出的每个资源路径都会附加额外的检查,每个从文件读取的NSData都会得到文件名检查。
本文分享了iOS Gif图片展示N种方式... //读取gif图片数据 NSData *gifData = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForResource:@earthGif ofType:@gif]]; //UIWebView生成 UIWebView *image