1

我的应用程序有一个 UILabel,格式为 NSAttributedString,其属性为:'NSKernAttributeName @1.9,'

  1. 当以下代码在运行 IOS6 的 iPad 上编译时,kern 按预期工作。
  2. 在运行 IOS7 的 iPad 上编译时,不会发生字距调整。

我已经在 Apple Developer 网站上提交了 Bug。#15108371 - 还没有回应

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;
4

1 回答 1

2

好的。我有同样的问题(见上面的评论)。这取决于字体(我也使用了 Courier)。由于某些奇怪的原因,Courier 不支持字距调整(在 iOS7 中!)。使用 CourierNewPSMT,一切都按预期工作....至少对我来说。

顺便说一句:这是 iphone 上一个不错的字体列表:http: //iosfonts.com/

于 2013-10-30T21:21:33.757 回答