问题描述
我的应用程序将UILabel格式化为NSAttributedString,其中
属性为:'NSKernAttributeName @ 1.9,'
My app has a UILabel formatted as an NSAttributedString withthe attribute: 'NSKernAttributeName @1.9,'
- 当下面的代码是在运行IOS6的iPad上编译的,kern按预期工作。
- 在运行IOS7的iPad上编译时,不会出现字距。
我已经在Apple Developer网站上提交了Bug。 #15108371 - 尚无回复
I have filed Bug at Apple Developer site. #15108371 - No Response yet
NSString *formattedNumber;
NSNumber *scoreNum = [[NSNumber alloc] initWithLongLong:thisScore];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterPadBeforeSuffix;
formatter.formatWidth = 10;
formatter.paddingCharacter = @"0";
formatter.numberStyle = NSNumberFormatterDecimalStyle;
formatter.usesGroupingSeparator = NO;
formattedNumber = [formatter stringFromNumber:scoreNum];
//Creat atributed string of formated number.
NSShadow *textShadow = [[NSShadow alloc] init];
textShadow.shadowColor = [UIColor colorWithRed:0.5 green:0.7 blue:1 alpha:1.0];
textShadow.shadowBlurRadius = 5.0;
textShadow.shadowOffset = CGSizeMake(0,0);
NSAttributedString *pHighScoreStyle = [[NSAttributedString alloc] initWithString:formattedNumber attributes: @{
NSFontAttributeName: [UIFont fontWithName:@"courier" size:16],
NSForegroundColorAttributeName: [UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:0.8],
NSKernAttributeName: @1.9,
NSShadowAttributeName: textShadow } ];
//Change the disply value.
runningScore.attributedText = pHighScoreStyle;
推荐答案
好的。我遇到了同样的问题(见上面的评论)。这取决于字体(我也使用Courier)。由于一些奇怪的原因,Courier不支持字距调整(在iOS7中!)。 使用CourierNewPSMT,一切都按预期工作 ....至少对我而言。
OK. I had the same problem (see comment above). It depends on the font (I used Courier as well). For some strange reason Courier does not support kerning (in iOS7!). Use CourierNewPSMT and everything works as expected .... at least for me.
BTW:这是一个很好的iphone字体列表:
BTW: Here is a nice list of fonts on the iphone:http://iosfonts.com/
这篇关于为什么IOS7中的NSAttributedString的Kerning失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!