"这个错误"是一个奇怪的iOS 7归因于文本错误

Dad*_*ido 5 iphone objective-c ios ios7


我在iOS 7中遇到了一个奇怪的错误,我把它称为"错误".

摘要:
两个字符"fi"被视为一个字符.

说明:
我创建了一个带有单词的UILabel作为属性文本.我创建了一个函数,在单击颜色时,该字的一个字符为蓝色.(即首先点击它为第一个字符着色,然后从第一个字符到第二个字体再次点击颜色......).

使用iOS 6模拟器没有任何问题,当我们切换到iOS 7模拟器时,只要单词上不包含"fi",一切都很好.例如,当我写"金融"时,从第一次点击开始,f和i都用蓝色着色.

它不依赖于'fi'位置,并且似乎只有'fi'才有问题.

码:

UILabel:
@property (strong, nonatomic) IBOutlet UILabel *wordLabel;

着色功能:

- (void) changeWordLabelWithWord:( NSString *)word to:(int) position{
NSMutableAttributedString *coloredText = [[NSMutableAttributedString alloc] initWithString:word];

[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:0.25 green:0.66 blue:0.96 alpha:1] range:NSMakeRange(0,position)];

_wordLabel.attributedText = coloredText;
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助和见解^^.
干杯!

Mar*_*n R 9

您可以将"ligature"属性设置为零NSMutableAttributedString.从 文档:

NSLigatureAttributeName
此属性的值是包含整数的NSNumber对象.Ligatures导致使用与这些字符对应的单个自定义字形呈现特定字符组合.值0表示没有连字.值1表示使用默认连字.值2表示使用所有连字.此属性的默认值为1.(iOS上不支持值2).

使用默认值1,字母"fi"将呈现为一个字形.有些字体甚至有三个字符序列的连字,例如"ffl".