之前,对于UITextField的使用没有具体的研究,有些时候总感觉用起来有局限性,其实时有些属性之前不知道,今天对于UITextField做下总结。

一、边框的显示

1、系统默认的边框

UITextField *textFieldSystem = [[UITextField alloc] initWithFrame:CGRectMake(10, 50, self.view.frame.size.width-20, 30)];
textFieldSystem.placeholder = @"请输入文字";
textFieldSystem.borderStyle = UITextBorderStyleRoundedRect; //设置边框的类型
[self.view addSubview:textFieldSystem];

UITextBorderStyle 边框类型是一个枚举,总共有4种类型,默认的是UITextBorderStyleNone 无边框类型,所以我们创建的时候需要给其设置边框的类型,否则什么都看不到。

typedef NS_ENUM(NSInteger, UITextBorderStyle) {
    UITextBorderStyleNone,
    UITextBorderStyleLine,
    UITextBorderStyleBezel,
    UITextBorderStyleRoundedRect
};

2、自定义的边框

如果,你觉得系统自带的UITextField满足不了你的需求,比如说你的圆角效果要更大些,或者你要把边框的颜色设置成红色的,那么你就需要自定义UITextField的边框了。

(1)新建一个类,叫做YCTextField,集成于UITextField,用于重写UITextField的一些方法。

#import "YCTextField.h"

@implementation YCTextField

//重写来重置占位符区域
- (CGRect)placeholderRectForBounds:(CGRect)bounds
{
    return CGRectInset(bounds, 8, 4);
}

//重写来重置边缘区域
- (CGRect)textRectForBounds:(CGRect)bounds
{
    return CGRectInset(bounds, 18,4);
}

//重写来重置编辑区域
- (CGRect)editingRectForBounds:(CGRect)bounds
{
    return CGRectInset(bounds, 20, 4);
}

小编,从官方文档里面看到有这几个方法很是开森,拷贝过来就想直接用。结果一直看不到效果,后面才发现,苹果官方文档里面特别说明了,这些方法需要重写不能直接调用。

(2) 自定义边框的属性

记得,导入头文件YCTextField.h

YCTextField *textField = [[YCTextField alloc] initWithFrame:CGRectMake(10, 100, self.view.frame.size.width-20, 40)];
    textField.placeholder = @"请输入文字";
    textField.layer.borderColor = [UIColor redColor].CGColor; //设置边框的颜色
    textField.layer.borderWidth = 1.0f; //设置边框的宽度
    textField.layer.cornerRadius = 12.0f; //设置边框的圆角大小
    [self.view addSubview:textField];

二、其他的属性

1、设置输入框中的叉号

textFieldSystem.clearButtonMode = UITextFieldViewModeWhileEditing;

UITextFieldViewMode 是一个枚举类型

typedef NS_ENUM(NSInteger, UITextFieldViewMode) {
    UITextFieldViewModeNever,
    UITextFieldViewModeWhileEditing,
    UITextFieldViewModeUnlessEditing,
    UITextFieldViewModeAlways
};

2、设置键盘的类型

textFieldSystem.keyboardType = UIKeyboardTypeNumberPad;

UIKeyboardType 是一个枚举类型

typedef enum {
    UIKeyboardTypeDefault,               默认键盘,支持所有字符         
    UIKeyboardTypeASCIICapable,          支持ASCII的默认键盘
    UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,支持+*#字符
    UIKeyboardTypeURL,                    URL键盘,支持.com按钮 只支持URL字符
    UIKeyboardTypeNumberPad,             数字键盘
    UIKeyboardTypePhonePad,             电话键盘
    UIKeyboardTypeNamePhonePad,          电话键盘,也支持输入人名
    UIKeyboardTypeEmailAddress,          用于输入电子 邮件地址的键盘     
    UIKeyboardTypeDecimalPad,            数字键盘 有数字和小数点
    UIKeyboardTypeTwitter,               优化的键盘,方便输入@、#字符
    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, 
} UIKeyboardType;