我正在开发一个 iOS 应用程序,我将 UITextField 子类化以设置占位符文本的颜色。我也将它水平居中,但我的问题是我的占位符文本没有垂直居中,并且由于某种原因,光标不在占位符文本中居中,而是出现在占位符文本的第一个字符之后。
为了设置占位符文本的颜色并将文本水平居中,我覆盖了 UITextField 子类中的方法,如下所示:
- (void)drawPlaceholderInRect:(CGRect)rect {
// Set colour and font size of placeholder text
[[UIColor whiteColor] setFill];
[[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:28] lineBreakMode:UILineBreakModeMiddleTruncation alignment:NSTextAlignmentCenter];
}
这是我创建和设置 UITextField 的代码:
_field = [[CustomTextField alloc] initWithFrame:CGRectMake(190, 300, 644, 64)];
_field.delegate = (id)self;
[_field becomeFirstResponder];
[_field setBackgroundColor:[UIColor darkGrayColor]];
[_field setTextColor:[UIColor whiteColor]];
[_field setPlaceholder:@"Enter First and Last Name"];
[[_field layer] setMasksToBounds:8.0f];
[[_field layer] setBorderColor:[[UIColor grayColor] CGColor]];
[[_field layer] setBorderWidth:1.0f];
[_field setFont:[UIFont fontWithName:@"Arial" size:25]];
[_field setReturnKeyType:UIReturnKeyDone];
[_field setTextAlignment:NSTextAlignmentCenter];
_field.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
[self.view addSubview:_field];
我最初将我的 UITextField 子类化,因为虽然一切看起来都很好,但由于某种原因,我的占位符文本是灰色而不是白色(我将其设置为文本字段的文本颜色)。具有讽刺意味的是,占位符文本垂直和水平居中,并且光标居中。因此,为了更正占位符文本颜色,我将 UITextField 子类化,只是为了解决更多问题。
有没有一种方法可以让占位符文本垂直居中,以及光标也居中?更好的是,有没有办法让我将占位符文本的灰色更改为白色而不必对其进行子类化?这将是理想的。