http://msdn.microsoft.com/en-us/library/8edha89s.aspx
В каждом случае один параметр должен быть одного и того же типа как класс или структура, объявляющая оператор (...)
Вы можете переопределить drawPlaceholderInRect: (CGRect) rect
как таковой, чтобы вручную отобразить текст заполнителя:
- (void) drawPlaceholderInRect:(CGRect)rect {
[[UIColor blueColor] setFill];
[[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:16]];
}
Быстро 5 С ПРОТЕСТОМ.
let attributes = [ NSAttributedString.Key.foregroundColor: UIColor.someColor ]
let placeHolderString = NSAttributedString(string: "DON'T_DELETE", attributes: attributes)
txtField.attributedPlaceholder = placeHolderString
протест, являющийся этим, НЕОБХОДИМО ввести непустое String
, где "DON'T_DELETE", даже если та строка установлена в коде в другом месте. Мог бы сохранить Вас пять минут головы-sctratching.
Может быть, вы захотите попробовать это, но Apple может предупредить вас о доступе к приватному IVar:
[self.myTextField setValue:[UIColor darkGrayColor]
forKeyPath:@"_placeholderLabel.textColor"];
ПРИМЕЧАНИЕ
По словам Мартина Аллеуса, это больше не работает на iOS 7.
Переопределение drawPlaceholderInRect:
было бы правильным способом, но он не работает из-за ошибки в API (или документации) .
Метод никогда не вызывается для UITextField
.
См. Также drawTextInRect в UITextField not called
Вы можете использовать решение digdog. Поскольку я не уверен, прошел ли это обзор Apple Apples, я выбрал другое решение: наложить на текстовое поле мою собственную метку, имитирующую поведение заполнителя.
Это немного запутано. Код выглядит так (обратите внимание, что я делаю это внутри подкласса TextField):
@implementation PlaceholderChangingTextField
- (void) changePlaceholderColor:(UIColor*)color
{
// Need to place the overlay placeholder exactly above the original placeholder
UILabel *overlayPlaceholderLabel = [[[UILabel alloc] initWithFrame:CGRectMake(self.frame.origin.x + 8, self.frame.origin.y + 4, self.frame.size.width - 16, self.frame.size.height - 8)] autorelease];
overlayPlaceholderLabel.backgroundColor = [UIColor whiteColor];
overlayPlaceholderLabel.opaque = YES;
overlayPlaceholderLabel.text = self.placeholder;
overlayPlaceholderLabel.textColor = color;
overlayPlaceholderLabel.font = self.font;
// Need to add it to the superview, as otherwise we cannot overlay the buildin text label.
[self.superview addSubview:overlayPlaceholderLabel];
self.placeholder = nil;
}