我创建了一个NSMutableAttributedString
,我尝试将其分配给textField.attributedText
属性,但它不起作用。
情境描述:
1)最初我prefix
placeholder
和textField
2)当我输入phone number
时,placeholder
会被替换,并且会在位置2添加x points
的学习。
3)删除所有数字并结束编辑后,所有文字的格式均为2分!?我不明白为什么。
我的解决方案:
我创建了一个空的NSMutableAttributedString
(finalString),并附加了2 NSMutableAttributedString's
(prefix + placeholder or digit)
,每个格式都相应。
代码为:
(void)updateAttributedTextFieldPrefix:(NSString *)prefix andText:(NSString *)newText {
NSMutableAttributedString * finalString = [[NSMutableAttributedString alloc] initWithString:@""];
// Create the Prefix String
NSMutableAttributedString * subString = [[NSMutableAttributedString alloc] initWithString:prefix];
[subString addAttribute:NSForegroundColorAttributeName value:kGray range:NSMakeRange(0, [prefix length])];
[finalString appendAttributedString:subString];
// Create the Phone Number String
NSMutableAttributedString * phoneNumber = [[NSMutableAttributedString alloc] initWithString:newText];
[phoneNumber addAttribute:NSForegroundColorAttributeName value:kWhite range:NSMakeRange(0, [phoneNumber length])];
[finalString appendAttributedString:phoneNumber];
// Add kearning between the two components
[finalString addAttribute:NSKernAttributeName value:[NSNumber numberWithInt:2] range:NSMakeRange([prefix length] - 1, 1)];
// Addidng the bold font
UIFont *font16 = [UIFont fontWithName:@"HelveticaNeue-Bold" size:16];
[finalString addAttribute:NSFontAttributeName value:font16 range:NSMakeRange(0, [finalString length])];
// LINE THAT HAS NO EFFECT !!!
self.textFieldForPhone.attributedText = finalString;
}
为什么不设置attributedText属性?我该如何解决这个问题?