之前,对于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;