我在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;
}
感谢您的帮助和见解^^。
干杯!
答案 0 :(得分:9)
您可以在NSMutableAttributedString
上将“连字”属性设置为零。
来自
documentation:
NSLigatureAttributeName
该属性的值是NSNumber 包含整数的对象。连字导致特定的字符 要使用单个自定义字形呈现的组合 对应那些字符。值0表示没有连字。 值1表示使用默认连字。价值2 表示使用所有连字。这个的默认值 属性为1.(iOS上不支持值2。)
使用默认值1
时,字母“fi”将呈现为一个字形。
有些字体甚至有三个字符序列的连字,例如“ffl”。
答案 1 :(得分:3)
iOS 7增加了很多印刷细节。其中一个是连字:操作系统用一个字体上更好的一个字形(字符)变体替换一些字符序列。
答案 2 :(得分:0)
以下是解决此问题的方法。 iOS 6.0 +
NSMutableAttributedString *attributedString;
attributedString = [[NSMutableAttributedString alloc] initWithString:label.text];
[attributedString addAttribute:NSLigatureAttributeName value:@0 range:NSMakeRange(0, label.text.length)];
[label.text setAttributedText:attributedString];
[attributedString release];