修改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
}
];
-摘抄