当前位置: 编程技术>移动开发
本页文章导读:
▪新风做浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理 新风作浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是太好,但是适合初学者看看,实现的简单功能.........
▪ 新风做浪博客学习(三)NSBundle读取图片 plist文件和txt文件 新风作浪博客学习(三)NSBundle读取图片 plist文件和txt文件
本文想简单介绍一下NSBundle读取图片到视图上,读取plist文件,读取txt文件显示在lable上;关于bundle作用在网上参考了两个博客,介.........
▪ 鏂伴浣滄氮鍗氬瀛︿範(鍥?鎶妏list閲屾暟鎹樉绀哄湪textField涓? 鏂伴浣滄氮鍗氬瀛︿範(鍥?鎶妏list閲屾暟鎹樉绀哄湪textField涓?.
鍦ㄤ唬鐮佸疄鐜癓able 銆乼extField鍒涘缓鐣岄潰浠ュ強閿洏鐨勫鐞嗕竴鏂囦腑瀹炵幇浠g爜甯冨眬鐣岄潰锛屽墠.........
[1]新风做浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
来源: 互联网 发布时间: 2014-02-18
新风作浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是太好,但是适合初学者看看,实现的简单功能界面:
[img]
[/img]
1.创建一个新工程叫LTFDemo; File->New->Project ->single View Application -> next
[img]
[/img]
2.打开LTFViewController.h文件,添加UITextFieldDelegate协议,因为TextField里输入内容时需要对键盘进行一些设置。界面需要一些布局,在LTFViewController.h文件一些声明对象
3.例举一个Lable的代码属性及功能的实现过程:
4.例举一个TextField的代码的实现其属性和功能的过程
5.介绍完lable和TextField代码实现,打开LTFViewController.m文件在ViewDidLoad中添加初始化代码,
6.然后用代理方法处理的就是键盘的操作,因为当键盘弹起的时候,在最下面的lable和textField可能会键盘遮挡,
在ViewDidLoad中我们有这样sNameTextField.returnKeyType=UIReturnKeyDone一段代码,作用就是当编辑完成后键盘右下角出现一个Done键,如果是中文输入法出现的是确定键,然后调用代理方法textFieldShouldReturn,当我们按下Done时,键盘就会退出;
resignFirstResponder(交出自己的第一响应者的身份,可以重写函数,这样如果写出返回no的时候当调用这个方法的时候它会拒绝交出第一响应者的身份)
7.当需要输入数字时候的时候 sAgeTextField.keyboardType = UIKeyboardTypeNumberPad;可以自动切换到数字键盘,键盘的八种风格
8.处理键盘遮挡视图的方法:
当开始点击textField会调用的方法 ,键盘高度216,当触摸高度在216一下extField时候,调整视图,把视图纵坐标向上增加216,orign(0,-216),然后view视图的高度增加216像素,相当于视图为320*696像素,如果设置增加216像素给view视图,会出现键盘遮盖部分为一篇黑色区域背景,当退出键盘是黑色会显示出来,给人视觉效果体验不好;当对textField编辑结束时调用textFieldDidEndEditing方法,调整视图为初始位置,frame.origin.y =20;为什么把视图的原点坐标纵坐标设置为20,因为iphone视图最上面通知栏占了20个像素;
9再附上其他几个委托方法源码:
10.数字键盘并没有Done键,就不能退出按钮,通过[sAgeTextFieldaddTarget:selfaction:@selector(textFieldDone:) forControlEvents:UIControlEventTouchDown];
这个相当于给TextField增加了一个按钮的功能,调用textFieldDone,当向输入框编辑完内容后,再次点击输入框键盘就退出了;
今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是太好,但是适合初学者看看,实现的简单功能界面:
[img]
[/img]
1.创建一个新工程叫LTFDemo; File->New->Project ->single View Application -> next
[img]
[/img]
2.打开LTFViewController.h文件,添加UITextFieldDelegate协议,因为TextField里输入内容时需要对键盘进行一些设置。界面需要一些布局,在LTFViewController.h文件一些声明对象
<span >#import <UIKit/UIKit.h>
@interface LTFViewController : UIViewController<UITextFieldDelegate>
{
UILabel *studentLable;//设置学生标题
UILabel *sNameLable;//学生姓名
UILabel *sSexLable;//学生性别
UILabel *sAgeLable;//学生年龄
UILabel *teacherLable;//老师标题
UILabel *tNameLable;//老师姓名
UILabel *tSexLable;//老师姓名
UITextField *sNameTextField;//学生姓名输入框
UITextField *sAgeTextField;//学生年龄输入框
UITextField *sSexTextField;//学生性别输入框
UITextField *tNameTextField;//老师姓名输入框
UITextField *tSexTextField; //老师性别输入框
}
@end</span>3.例举一个Lable的代码属性及功能的实现过程:
初始化lable的位置和大小,CGRectMake()函数中的参数分别是原点坐标x和y,后面两个参数表示lable的宽度(width)和高度(height), studentLable=[[UILabelalloc] initWithFrame:CGRectMake(100,10, 100,30)]; 设置Lable的字体颜色值颜色, [studentLable setTextColor:[UIColor blackColor]]; 设置lable字体大小 studentLable.font=[UIFontsystemFontOfSize:20]; 设置lable的背景颜色 studentLable.backgroundColor = [UIColor redColor]; 设置lable的标题字体对齐方式,此处居中对其 [studentLable setTextAlignment:UITextAlignmentCenter]; 设置lable标题 studentLable.text=@"学 生"; 把lable添加到视图上,少了这一步视图上使显示不出来的 [self.view addSubview:studentLable];
4.例举一个TextField的代码的实现其属性和功能的过程
//初始化坐标位置 sNameTextField=[[UITextFieldalloc] initWithFrame:CGRectMake(100,60, 200,30)]; //为空白文本字段绘制一个灰色字符串作为占位符,提示作用 sNameTextField.placeholder =@"输入姓名"; //默认就是左对齐,这个是UITextField扩展属性 sNameTextField.textAlignment =UITextAlignmentLeft; //设置textField的形状 sNameTextField.borderStyle=UITextBorderStyleRoundedRect; //设置键盘完成按钮 sNameTextField.returnKeyType=UIReturnKeyDone; //委托类需要遵守UITextFieldDelegate协议 sNameTextField.delegate=self; //设置TextFiel输入框字体大小 sNameTextField.font = [UIFontsystemFontOfSize:18]; //安全设置,密文保护设置,显示点点,常用于密码设置栏 sNameTextField.secureTextEntry = YES; // 把TextField添加到视图上 [self.viewaddSubview:sNameTextField]; //输入年龄需要启用数字键盘,此处实现自动跳转到数字键盘 sAgeTextField.keyboardType =UIKeyboardTypeNumberPad;
5.介绍完lable和TextField代码实现,打开LTFViewController.m文件在ViewDidLoad中添加初始化代码,
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
studentLable=[[UILabel alloc] initWithFrame:CGRectMake(100, 10, 100, 30)];
sNameLable=[[UILabel alloc] initWithFrame:CGRectMake(10, 60, 80, 30)];
sSexLable=[[UILabel alloc] initWithFrame:CGRectMake(10, 100, 80, 30)];
sAgeLable=[[UILabel alloc] initWithFrame:CGRectMake(10, 140, 80, 30)];
teacherLable=[[UILabel alloc] initWithFrame:CGRectMake(100, 200, 100, 30)];
tNameLable=[[UILabel alloc] initWithFrame:CGRectMake(10,240, 80, 30)];
tSexLable=[[UILabel alloc] initWithFrame:CGRectMake(10, 280, 80, 30)];
[studentLable setTextColor:[UIColor blackColor]];
[sNameLable setTextColor:[UIColor blackColor]];
[sAgeLable setTextColor:[UIColor blackColor]];
[sSexLable setTextColor:[UIColor blackColor]];
[teacherLable setTextColor:[UIColor blackColor]];
[tNameLable setTextColor:[UIColor blackColor]];
[tSexLable setTextColor:[UIColor blackColor]];
studentLable.backgroundColor = [UIColor redColor];
sNameLable.backgroundColor = [UIColor clearColor];
sAgeLable.backgroundColor=[UIColor clearColor];
sSexLable.backgroundColor = [UIColor clearColor];
teacherLable.backgroundColor = [UIColor blueColor];
tNameLable.backgroundColor = [UIColor clearColor];
tSexLable.backgroundColor = [UIColor clearColor];
[studentLable setTextAlignment:UITextAlignmentCenter];
[sNameLable setTextAlignment:UITextAlignmentCenter];
[sAgeLable setTextAlignment:UITextAlignmentCenter];
[sSexLable setTextAlignment:UITextAlignmentCenter];
[teacherLable setTextAlignment:UITextAlignmentCenter];
[tNameLable setTextAlignment:UITextAlignmentCenter];
[tSexLable setTextAlignment:UITextAlignmentCenter];
studentLable.text=@"学 生";
sNameLable.text=@"姓名:";
sAgeLable.text=@"性别:";
sSexLable.text=@"年龄:";
teacherLable.text=@"老 师";
tNameLable.text=@"姓名:";
tSexLable.text=@"性别:";
studentLable.font=[UIFont systemFontOfSize:20];
[self.view addSubview:studentLable];
[self.view addSubview:sNameLable];
[self.view addSubview:sAgeLable];
[self.view addSubview:sSexLable];
[self.view addSubview:teacherLable];
[self.view addSubview:tNameLable];
[self.view addSubview:tSexLable];
sNameTextField=[[UITextField alloc] initWithFrame:CGRectMake(100, 60, 200, 30)];//初始化坐标位置
sNameTextField.placeholder = @"输入姓名";//为空白文本字段绘制一个灰色字符串作为占位符
sNameTextField.textAlignment = UITextAlignmentLeft;//默认就是左对齐,这个是UITextField扩展属性
sNameTextField.borderStyle=UITextBorderStyleRoundedRect; //设置textField的形状
// sNameTextField.clearsOnBeginEditing = NO;//设置为YES当用点触文本字段时,字段内容会被清除,这个属性一般用于密码设置,当输入有误时情况textField中的内容
sNameTextField.returnKeyType=UIReturnKeyDone;//设置键盘完成按钮
sNameTextField.delegate=self;//委托类需要遵守UITextFieldDelegate协议
sNameTextField.font = [UIFont systemFontOfSize:18]; //设置TextFiel输入框字体大小
sAgeTextField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 200, 30)];
sAgeTextField.textAlignment = UITextAlignmentLeft;
sAgeTextField.borderStyle = UITextBorderStyleRoundedRect;
sAgeTextField.keyboardType = UIKeyboardTypeNumberPad;//输入年龄需要设置数字键盘
[sAgeTextField addTarget:self action:@selector(textFieldDone:) forControlEvents:UIControlEventTouchDown]; //用textFieldDone函数,实现关闭数字键盘
sAgeTextField.delegate=self;
sSexTextField = [[UITextField alloc] initWithFrame:CGRectMake(100, 140, 200, 30)];
sSexTextField.textAlignment = UITextAlignmentLeft;
sSexTextField.borderStyle = UITextBorderStyleRoundedRect;
sSexTextField.returnKeyType=UIReturnKeyDone;
sSexTextField.delegate=self;
// sNameTextField.enabled=NO; //把 sNameTextField设置成无效,点击任何反应
tNameTextField = [[UITextField alloc] initWithFrame:CGRectMake(100, 240, 200, 30)];
tNameTextField.textAlignment = UITextAlignmentLeft;
tNameTextField.borderStyle = UITextBorderStyleRoundedRect;
tNameTextField.delegate=self;
tSexTextField = [[UITextField alloc] initWithFrame:CGRectMake(100, 280, 200, 30)];
tSexTextField.textAlignment = UITextAlignmentLeft;
tSexTextField.borderStyle = UITextBorderStyleRoundedRect;
tSexTextField.returnKeyType=UIReturnKeyDone;
tSexTextField.delegate=self;
tSexTextField.secureTextEntry = YES; //安全设置,密文保护设置
// 测试用的TextField
UITextField *testTextField = [[UITextField alloc] initWithFrame:CGRectMake(100, 400, 200, 30)];
testTextField.textAlignment = UITextAlignmentLeft;
testTextField.borderStyle = UITextBorderStyleRoundedRect;
testTextField.returnKeyType=UIReturnKeyDone;
testTextField.delegate=self;
// 把TextField添加到视图上
[self.view addSubview:sNameTextField];
[self.view addSubview:sAgeTextField];
[self.view addSubview:sSexTextField];
[self.view addSubview:tSexTextField];
[self.view addSubview:tNameTextField];
[self.view addSubview:testTextField];
}6.然后用代理方法处理的就是键盘的操作,因为当键盘弹起的时候,在最下面的lable和textField可能会键盘遮挡,
在ViewDidLoad中我们有这样sNameTextField.returnKeyType=UIReturnKeyDone一段代码,作用就是当编辑完成后键盘右下角出现一个Done键,如果是中文输入法出现的是确定键,然后调用代理方法textFieldShouldReturn,当我们按下Done时,键盘就会退出;
resignFirstResponder(交出自己的第一响应者的身份,可以重写函数,这样如果写出返回no的时候当调用这个方法的时候它会拒绝交出第一响应者的身份)
//按下Done按钮时调用这个方法,可让按钮消失
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}7.当需要输入数字时候的时候 sAgeTextField.keyboardType = UIKeyboardTypeNumberPad;可以自动切换到数字键盘,键盘的八种风格
typedefenum {
UIKeyboardTypeDefault, // 默认键盘:支持所有字符
UIKeyboardTypeASCIICapable, // 支持ASCII的默认键盘
UIKeyboardTypeNumbersAndPunctuation, // 标准电话键盘,支持+*#等符号
UIKeyboardTypeURL, // URL键盘,有.com按钮;只支持URL字符
UIKeyboardTypeNumberPad, //数字键盘
UIKeyboardTypePhonePad, // 电话键盘
UIKeyboardTypeNamePhonePad, // 电话键盘,也支持输入人名字
UIKeyboardTypeEmailAddress, // 用于输入电子邮件地址的键盘
} UIKeyboar;8.处理键盘遮挡视图的方法:
当开始点击textField会调用的方法 ,键盘高度216,当触摸高度在216一下extField时候,调整视图,把视图纵坐标向上增加216,orign(0,-216),然后view视图的高度增加216像素,相当于视图为320*696像素,如果设置增加216像素给view视图,会出现键盘遮盖部分为一篇黑色区域背景,当退出键盘是黑色会显示出来,给人视觉效果体验不好;当对textField编辑结束时调用textFieldDidEndEditing方法,调整视图为初始位置,frame.origin.y =20;为什么把视图的原点坐标纵坐标设置为20,因为iphone视图最上面通知栏占了20个像素;
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
// 键盘高度216
if (textField.frame.origin.y>216) {
CGRect frame = self.view.frame;
frame.origin.y -=216;
frame.size.height +=216;
self.view.frame=frame;
}
}
// 当对textField编辑结束时调用此方法,需要调整视图为初始位置
-(void)textFieldDidEndEditing:(UITextField *)textField
{
CGRect frame = self.view.frame;
frame.origin.x=00;
frame.origin.y =20;//为什么20,因为iphone视图最上面通知栏20个像素
frame.size.height =480;
self.view.frame=frame;
}
9再附上其他几个委托方法源码:
//TextField的委托方法
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
//返回一个BOOL型值,指定是否循序文本字段编辑
return YES;
}-(BOOL)textFieldShouldClear:(UITextField *)textField
{
// 返回一个BOOL值指明是否允许根据用户请求清除内容 可以设置在特定条件下才允许清除内容
return YES;
}10.数字键盘并没有Done键,就不能退出按钮,通过[sAgeTextFieldaddTarget:selfaction:@selector(textFieldDone:) forControlEvents:UIControlEventTouchDown];
这个相当于给TextField增加了一个按钮的功能,调用textFieldDone,当向输入框编辑完内容后,再次点击输入框键盘就退出了;
//重写数字键盘的方法
-(void)textFieldDone:(id)sender{
[sAgeTextField resignFirstResponder];
}
[2] 新风做浪博客学习(三)NSBundle读取图片 plist文件和txt文件
来源: 互联网 发布时间: 2014-02-18
新风作浪博客学习(三)NSBundle读取图片 plist文件和txt文件
本文想简单介绍一下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]
项目源码:
本文想简单介绍一下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"];
完整代码:
// 定义一个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]
项目源码:
[3] 鏂伴浣滄氮鍗氬瀛︿範(鍥?鎶妏list閲屾暟鎹樉绀哄湪textField涓?
来源: 互联网 发布时间: 2014-02-18
鏂伴浣滄氮鍗氬瀛︿範(鍥?鎶妏list閲屾暟鎹樉绀哄湪textField涓?.
鍦ㄤ唬鐮佸疄鐜癓able 銆乼extField鍒涘缓鐣岄潰浠ュ強閿洏鐨勫鐞嗕竴鏂囦腑瀹炵幇浠g爜甯冨眬鐣岄潰锛屽墠闈篃鐪嬩簡plist鏂囦欢鐨勪竴浜涙搷浣滐紝鎬庢牱鎶妏list鏂囦欢涓殑鍊兼樉绀哄湪瑙嗗浘涓婂憿锛屼簬鏄湪浠g爜瀹炵幇Lable 銆乼extField鍒涘缓鐣岄潰浠ュ強閿洏鐨勫鐞嗕竴鏂囧伐绋嬩唬鐮佷腑娣诲姞浜嗗嚑琛屼唬鐮侊紝璁﹑list鏂囦欢涓殑value鏄剧ず鍦╰extField涓紱
1.鎵撳紑宸ョ▼涔嬪悗锛孎ile --> New -->File 鍦ㄥ脊鍑虹晫闈腑宸︽爮閫変腑Mac os X 涓嬬殑Resourse涓€鏍忥紝閫変腑Property List锛岀偣鍑籒ext鍛藉悕涓簍estInfo.plist锛岀劧鍚庢墦寮€testInfo.plist鏂囦欢锛屽湪鏂囦欢涓婂彸閿瓵dd Row锛屾坊鍔犲涓嬪ご鎵€绀烘暟鎹?鎴戠敤鐨刋code鐗堟湰鏄?.3.1锛岃€佺増鏈殑鍙兘鏈夌殑涓嶄竴鏍?
[img]
[/img]
鍦╒iew鐨勬渶鍚庨潰娣诲姞浠g爜
淇濆瓨杩愯锛?
[img]
[/img]
鍦ㄤ唬鐮佸疄鐜癓able 銆乼extField鍒涘缓鐣岄潰浠ュ強閿洏鐨勫鐞嗕竴鏂囦腑瀹炵幇浠g爜甯冨眬鐣岄潰锛屽墠闈篃鐪嬩簡plist鏂囦欢鐨勪竴浜涙搷浣滐紝鎬庢牱鎶妏list鏂囦欢涓殑鍊兼樉绀哄湪瑙嗗浘涓婂憿锛屼簬鏄湪浠g爜瀹炵幇Lable 銆乼extField鍒涘缓鐣岄潰浠ュ強閿洏鐨勫鐞嗕竴鏂囧伐绋嬩唬鐮佷腑娣诲姞浜嗗嚑琛屼唬鐮侊紝璁﹑list鏂囦欢涓殑value鏄剧ず鍦╰extField涓紱
1.鎵撳紑宸ョ▼涔嬪悗锛孎ile --> New -->File 鍦ㄥ脊鍑虹晫闈腑宸︽爮閫変腑Mac os X 涓嬬殑Resourse涓€鏍忥紝閫変腑Property List锛岀偣鍑籒ext鍛藉悕涓簍estInfo.plist锛岀劧鍚庢墦寮€testInfo.plist鏂囦欢锛屽湪鏂囦欢涓婂彸閿瓵dd Row锛屾坊鍔犲涓嬪ご鎵€绀烘暟鎹?鎴戠敤鐨刋code鐗堟湰鏄?.3.1锛岃€佺増鏈殑鍙兘鏈夌殑涓嶄竴鏍?
[img]
[/img]
鍦╒iew鐨勬渶鍚庨潰娣诲姞浠g爜
// 璇诲彇plist鏂囦欢
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"testInfo" ofType:@"plist"];
NSMutableDictionary *data=[[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
// 鎵撳嵃鍑簆list鏂囦欢
NSLog(@"%@",data);
//璇诲彇瀛︾敓瀛楀吀鐨勫唴瀹瑰埌StudentInfo涓璹u
NSMutableDictionary *StudentInfo = [data objectForKey:@"Student"];
sNameTextField.text = [NSString stringWithFormat:@"%@",[StudentInfo objectForKey:@"Name"]];
sAgeTextField.text = [NSString stringWithFormat:@"%@",[StudentInfo objectForKey:@"Age"]];
sSexTextField.text = [NSString stringWithFormat:@"%@",[StudentInfo objectForKey:@"Sex"]];
NSMutableDictionary *teacherInfo = [data objectForKey:@"teacher"];
//鍦╰eacher瀛楀吀涓紝鎶婇敭涓篘ame鐨勫€艰祴缁檛NameTextField鐨則ext涓?
tNameTextField.text = [NSString stringWithFormat:@"%@",[teacherInfo objectForKey:@"Name"]];
tSexTextField.text = [NSString stringWithFormat:@"%@",[teacherInfo objectForKey:@"Sex"]];
淇濆瓨杩愯锛?
[img]
[/img]
最新技术文章: