0

我想知道如何在 iOS 6 中设置字母间距?使用以下代码在 iOS 7 上运行良好,现在需要为 iOS 6 做:

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:[arraySettings objectAtIndex:indexPath.row]];

float spacing = 0.2f;
[attributedString addAttribute:NSKernAttributeName
                                 value:@(spacing)
                                 range:NSMakeRange(0, [[arraySettings objectAtIndex:indexPath.row] length])];

cell.textLabel.attributedText = attributedString;

在 iOS 6 中崩溃上述代码后的错误图像:

在此处输入图像描述

谢谢。

4

2 回答 2

0

我必须在我的一个项目中做同样的事情并使用相同的代码。它对我来说工作得很好。

NSMutableAttributedString *attributedString =
[[NSMutableAttributedString alloc] initWithString:@"hi this is my testing string"];    
float spacing = 1.0f;
[attributedString addAttribute:NSKernAttributeName
                         value:@(spacing)
                         range:NSMakeRange(0, [@"hi this is my testing string" length])];    
mylbl.attributedText = attributedString;
于 2014-06-30T09:26:23.483 回答
0

arraySettings我的猜测是您的ivar存在某种与内存相关的问题。

我稍微修改了您在测试项目中提供的代码,并且在 iOS 6.1 和 7.1 模拟器上运行时它似乎对我来说工作正常。

您可以尝试使用以下代码,看看会发生什么?

NSString *string = [[arraySettings objectAtIndex:indexPath.row] copy];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string];

CGFloat spacing = 0.2f;
[attributedString addAttribute:NSKernAttributeName value:@(spacing) range:NSMakeRange(0, string.length)];

cell.textLabel.attributedText = attributedString;

如果您仍然遇到崩溃,那么您将需要提供有关您正在使用 arraySettings 对象执行的操作的更多信息。

于 2014-06-30T10:04:38.293 回答