UITextField详解之一:UITextField基本属性

UITextField是IOS开发中用户交互中重要的一个控件,常被用来作帐号密码框,输入信息框等。建立一个用于输入的UITextField其实很简单,在平时使用中,更多的是须要 UITextField和其余UI控件之间进行交互。程序员

一、UITextField的建立

建立一个UITextField其实很容易,代码以下,只需2行就搞定了。api

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 100, 100, 30)];[self.view addSubview:textField];

但是这么写完,你会发现一个问题就是,我明明建立了UITextField,怎么在视图上看不到??缘由就是UITextField默认的背景色是ClearColor,固然咱们就看不到上面代码所建立的UITextField了。那可能会想,改下UITextField的背景颜色,不就能够看到了么??那我们接下来就给UITextField添加一个背景色吧。学习

textField.backgroundColor = [UIColor redColor];

效果咱能够看下:优化

TextField

额,这个样式咱就先不要吐槽了⊙﹏⊙,至少,你要的UITextField已经出如今你的眼前了。点击这个UITextField,系统会自动弹出键盘(是否是很神奇o(╯□╰)o)。有一个小细节就是,UITextField的高度,大苹果认为30最好看(若是你是用xib或者StoryBoard建立的话,你会看到你拖进去的UITextField的高度值是30,且没法更改),既然我们老大以为30最好看,那就通常状况下就不要去改一些奇葩值,好比下面这款:ui

TF1

好很差看,仁者见仁咯。那我们平时见到的带有圆角的UITextField是怎么来的呢,有同窗可能想到了,修改UITextField的layer层的属性cornerRadius,固然没想到也没关系。苹果直接给UITextField提供了一个borderStyle的属性。看这个名字就大概猜到了这是个枚举类型的值了,那它都有哪些枚举值呢??spa

typedef NS_ENUM(NSInteger, UITextBorderStyle) {    
UITextBorderStyleNone,    // 默认值,啥都没有    
UITextBorderStyleLine,     // 线性边框    
UITextBorderStyleBezel,    // 阴影效果边框    
UITextBorderStyleRoundedRect  // 带圆角的边框};

上边这些枚举值,看名字是看不明白的,那就实践一下呗:代理

textField.borderStyle = UITextBorderStyleRoundedRect;

此次不须要添加背景色,就能够看到所建立的UITextField了(经过UITextField的layer层想要实现一样的效果,还需设置borderWidth这一属性)。code

二、UITextField的文本相关

既然我们前边说了UITextField用于实现文本输入,固然得有文本相关的属性咯。第一个想到的就是UITextField有没有text属性呢??orm

textField.text = @"史上最牛逼的输入框";

运行一下,我们会看到:ip

TF3

果真,UITextField是有text属性的呢(哇靠,是否是以为本身真特么聪明…),好了,自恋完了,你有没有发现一个问题,就是“bi”字及之后的字出不来了。这该怎么办呢??聪明如个人同窗已经想到了,是建立的UItextField的宽度不够,加大宽度就行了嘛。

有些时候,好比咱们登陆QQ,帐号的输入框中会有一行销魂的字,告诉你,请输入QQ号码,密码的输入框中也有相似的提示。而且在你输入的一瞬间,这个提示就消失了,而后把你输入的内容删除,它又出来了。那这个该怎么实现呢??在textField里面加一个label?点击textField后去除这个label?可是在没进行事后面的学习,你并不知道怎么去实现它。伟大的苹果给咱们提供了一个属性,让你只要用一行代码就能够作到在任何textField里面添加提示文本(欢呼声~~~)。不卖关子了,下面贴出代码:

textField.placeholder = @"史上最帅的程序员";

运行效果:TF4

怎么样,是否是够销魂?

那既然有text属性,就确定要有文本对齐方式之类的属性咯,下面我们来逐一介绍下UITextField的经常使用属性。

  • textField的文本对齐方式也仅仅只须要一行代码来实现:

textField.textAlignment = NSTextAlignmentCenter;

这个textAlignment一样是枚举类型:

/* Values for NSTextAlignment */typedef NS_ENUM(NSInteger, NSTextAlignment) {    NSTextAlignmentLeft      = 0,    // Visually left aligned  左对齐#if TARGET_OS_IPHONE    NSTextAlignmentCenter    = 1,    // Visually centered   居中    NSTextAlignmentRight     = 2,    // Visually right aligned  右对齐#endif    NSTextAlignmentJustified = 3,    // Fully-justified. The last line in a paragraph is natural-aligned.       NSTextAlignmentNatural   = 4,    // Indicates the default alignment for script}
  • clearsOnBeginEditing这个属性,默认为NO,设置为YES,是当你开始编辑的时候,就删除textField里面全部字符串。

  • keyboardType,设置textField的弹出键盘类型,也是一个枚举值。

typedef NS_ENUM(NSInteger, UIKeyboardType) { UIKeyboardTypeDefault, // Default type for the current input method. UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active  支持ASCII的默认键盘 UIKeyboardTypeNumbersAndPunctuation, // Numbers and assorted punctuation.  数字+符号 UIKeyboardTypeURL, // A type optimized for URL entry (shows . / .com prominently).  URL键盘,支持.com按钮 只支持URL字符 UIKeyboardTypeNumberPad, // A number pad (0-9). Suitable for PIN entry. 数字键盘 UIKeyboardTypePhonePad, // A phone pad (1-9, *, 0, #, with letters under the numbers). 拨号键盘 UIKeyboardTypeNamePhonePad, // A type optimized for entering a person's name or phone number. 电话键盘,也支持输入人名 UIKeyboardTypeEmailAddress, // A type optimized for multiple email address entry (shows space @ . prominently).  可输入邮箱地址的键盘 UIKeyboardTypeDecimalPad NS_ENUM_AVAILABLE_IOS(4_1), // A number pad with a decimal point.  带有小数点的数字键盘 UIKeyboardTypeTwitter NS_ENUM_AVAILABLE_IOS(5_0), // A type optimized for twitter text entry (easy access to @ #)    优化的键盘,方便输入@、#字符 UIKeyboardTypeWebSearch NS_ENUM_AVAILABLE_IOS(7_0), // A default keyboard type with URL-oriented addition (shows space . prominently).  UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated };
  • autocapitalizationType,设置输入框输入的首字母是否大写

//首字母是否大写 textField.autocapitalizationType = UITextAutocapitalizationTypeNone;

依旧是枚举值:

typedef enum { UITextAutocapitalizationTypeNone, // 不自动大写 UITextAutocapitalizationTypeWords, // 单词首字母大写 UITextAutocapitalizationTypeSentences, // 句子的首字母大写 UITextAutocapitalizationTypeAllCharacters,  // 全部字母都大写} UITextAutocapitalizationType;
  • returnKeyType返回键类型

//return键变成什么键 text.returnKeyType =UIReturnKeyDone;

仍是枚举值:

typedef NS_ENUM(NSInteger, UIReturnKeyType) { UIReturnKeyDefault,  // 默认 灰色按钮,标有Return UIReturnKeyGo,   //  标有Go的蓝色按钮 UIReturnKeyGoogle, // 标有Google的蓝色按钮,用于搜索 UIReturnKeyJoin,  // 标有Join的蓝色按钮 UIReturnKeyNext,  // 标有Next的蓝色按钮 UIReturnKeyRoute, // 标有Route的蓝色按钮 UIReturnKeySearch, // 标有Search的蓝色按钮 UIReturnKeySend, // 标有Send的蓝色按钮 UIReturnKeyYaho

上面的不少枚举值,仅仅是显示的文字不一样,具体实现什么功能,还须要在下面的学习中涉及到。如今我们只须要知道键盘上显示Go,我也能够用它去实现Done的功能,这上面的文字只是给用户一个提示。

三、总结

这一章,仅仅介绍了一些UITextField的基本的经常使用属性,熟练掌握这些属性的使用,能够为咱们接下来的学习打下很好的基础,下一章节,我们开始讲解UITextField的代理方法,也是UITextField能具体到开发中,比较重要的一些方法。

o, // 标有Yahoo的蓝色按钮 UIReturnKeyDone, // 标有Done的蓝色按钮 UIReturnKeyEmergencyCall,  // 紧急呼叫按钮 UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0),  // 标有Continue的蓝色按钮;
相关文章
相关标签/搜索