5

所以首先,我需要设置占位符文本颜色,所以我将 UITextfield 子类化,如几个堆栈溢出帖子所示。这工作正常。这是一个示例帖子:How do I subclass UITextField and override drawPlaceholderInRect to change Placeholder color

但是,当我尝试使用searchNameField.textAlignment = UITextAlignmentCenter;它时,它不再使占位符居中。输入文本仍然居中。

那么,假设由于子类化而居中不起作用,我必须向 UITextField 子类添加什么才能使占位符文本居中?

谢谢

编辑

这是我用来解决这个问题的代码。这放置在我的 UITextField 子类中。

- (CGRect)placeholderRectForBounds:(CGRect)bounds 
{
    CGSize size = [[self placeholder] sizeWithFont:[UIFont fontWithName:@"Arial" size:placeholdTextSize]];

    return CGRectMake( (bounds.size.width - size.width)/2 , bounds.origin.y , bounds.size.width , bounds.size.height);
}

请注意,placeholdTextSize 是我在初始化期间设置的属性。

4

3 回答 3

5

给你,伙计

子类化 UITextField 将完成工作:

// CustomTextField.h
@interface CustomTextField : UITextField {
}
@end

覆盖方法:

@implementation
- (CGRect)placeholderRectForBounds:(CGRect)bounds {
    return CGRectMake(x,y,width,height);//Return your desired x,y position and width,height
}

- (void)drawPlaceholderInRect:(CGRect)rect {
    //draw place holder.
 [[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:12]];

}
@end
于 2012-07-18T10:49:59.910 回答
4

我认为这会起作用(经过测试)

- (void) drawPlaceholderInRect:(CGRect)rect {

      [[UIColor redColor] setFill];
      [self.placeholder drawInRect:rect
                          withFont:self.font
                     lineBreakMode:UILineBreakModeTailTruncation
                         alignment:self.textAlignment];
    }

https://github.com/mschulkind/cordova-true-native-ios/blob/master/Classes/UITextFieldPlugin.m

于 2013-04-11T06:00:34.370 回答
2

您可以在 UITextfield 子类中执行此操作

- (void)drawPlaceholderInRect:(CGRect)rect {

[[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.8] setFill];

[[self placeholder] drawInRect:rect withFont:[UIFont boldSystemFontOfSize:16.0] lineBreakMode:UILineBreakModeTailTruncation alignment:NSTextAlignmentCenter];

}

于 2013-07-27T05:46:35.990 回答