更改占位符文字颜色

我想更改我在UITextField控件中设置的占位符文本的颜色,使其变为黑色。

我宁愿这样做,而不使用普通文本作为占位符,并且必须覆盖所有方法来模仿占位符的行为。

我相信如果我重写这个方法:

- (void)drawPlaceholderInRect:(CGRect)rect

那么我应该可以做到这一点。 但我不确定如何从这个方法中访问实际的占位符对象。


由于在iOS 6的UIViews中引入了属性字符串,因此可以为占位符文本指定一个颜色,如下所示:

if ([textField respondsToSelector:@selector(setAttributedPlaceholder:)]) {
  UIColor *color = [UIColor blackColor];
  textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholderText attributes:@{NSForegroundColorAttributeName: color}];
} else {
  NSLog(@"Cannot set placeholder text's color, because deployment target is earlier than iOS 6.0");
  // TODO: Add fall-back code to set placeholder color.
}

容易和无痛,可能是一个简单的选择。

_placeholderLabel.textColor

不建议用于制作,Apple可能会拒绝您的提交。


您可以重写drawPlaceholderInRect:(CGRect)rect以手动呈现占位符文本:

- (void) drawPlaceholderInRect:(CGRect)rect {
    [[UIColor blueColor] setFill];
    [[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:16]];
}
链接地址: http://www.djcxy.com/p/73495.html

上一篇: Change placeholder text color

下一篇: Suggest Algorithm for the programming puzzle