对系统自带的UITextField进行自定义
textfield,顾名思义,输入文本框,如果是在storyboard直接拖一个这样的控件到view上,则只会显示一个文本框,但是我们有更多地需求,比如说在文本框的左边设置一个图像,这样用户看到这个文本框的时候能够凭直觉凭经验知道这个文本框是用来输入什么内容的。那么我们可以这样设置文本框:
// 设置账号文本框左边视图
// 如果是系统控件中的子控件通常位置是由系统决定,我们不能设置,但是我们可以设置它的尺寸。
UIImageView *leftV = [[UIImageView alloc] initWithImage:image];
// 设置图片居中
leftV.contentMode = UIViewContentModeCenter;
CGRect frame = leftV.frame;
frame.size.width += 10;
leftV.frame = frame;
// 设置文本框的左边视图
textField.leftView = leftV;
// 必须要设置左边视图模式,总是显示模式
textField.leftViewMode = UITextFieldViewModeAlways;
这里要非常注意:一定要记住设置leftViewMode这个属性,否则,文本框左边的图像无法显示。
也可以改变占位文字的颜色,比如说有这样一个需求,当文本框处于正在编辑状态时,占位文字由灰色(默认)变为白色,则可以这样设置:
- (BOOL)becomeFirstResponder
{
[self setValue:[UIColor whiteColor] forKeyPath:placeholderTextlable.textColor];
return [super becomeFirstResponder];
}
这样似乎有点不太和谐,此时占位文字颜色是变白了,但是光标却是蓝色的(默认),那么我们就有必要对光标颜色进行改变,这个改变最好在初始化的适合设置:
- (void)awakeFromNib
{
// 设置光标颜色
self.tintColor = [UIColor whiteColor];
}