修改UITextField的placeholder字体颜色并垂直居中

修改字体和颜色需要用到kvc:

yourTextField.placeholder = @"username is in here!";

[yourTextField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];

[yourTextField setValue:[UIFont boldSystemFontOfSize:16] forKeyPath:@"_placeholderLabel.font"];

有一个问题,当字体过小的时候,placeholder的字体会显示不是垂直居中的,这需要用到NSParagraphStyle,

我的解决办法是:

NSMutableParagraphStyle *style = [yourTextField.defaultTextAttributes[NSParagraphStyleAttributeName] mutableCopy];

style.minimumLineHeight = yourTextField.font.lineHeight - (yourTextField.font.lineHeight - [UIFont systemFontOfSize:14.0].lineHeight) / 2.0;

yourTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"YourTextField Placeholder text"

attributes:@{

NSForegroundColorAttributeName: [UIColor colorWithRed:255/255.0f green:255/255.0f blue:255/255.0f alpha:0.7f],

NSFontAttributeName : [UIFont systemFontOfSize:14.0],

NSParagraphStyleAttributeName : style

}

];

-摘抄

原文地址:https://www.cnblogs.com/akiha/p/7086097.html