需要将自定义UITextField中的占位符文本在iOS中垂直居中

问题描述 投票:1回答:1

我正在使用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子类化,仅是为了解决更多问题。

现在有没有一种方法可以使占位符文本垂直居中以及光标也居中?更好的是,是否有一种方法可以将占位符文本的灰色更改为白色而不必将其子类化?这将是理想的。

我正在使用iOS应用程序,其中我将UITextField子类化以设置占位符文本的颜色。我也将其水平居中,但是我的问题是我的...

ios uitextfield
1个回答
4
投票

我认为您忘记了在.h中实现(不是在自定义TextField类中实现)

© www.soinside.com 2019 - 2024. All rights reserved.