我在iOS 7中遇到一个奇怪的错误,我称之为“ fi错误”。
摘要:
两个字符“ 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;
}
感谢您的帮助和见解^^。
干杯!
您可以在上将“ ligature”属性设置为零NSMutableAttributedString
。从文档中:
NSLigatureAttributeName
该属性的值是一个包含整数的NSNumber对象。连字导致使用与那些字符相对应的单个自定义字形来呈现特定的字符组合。值0表示没有连字。值1表示使用默认连字。值2表示使用所有连字。此属性的默认值为1。(iOS 2不支持值2。)
使用默认值时1
,字母“ fi”呈现为一个字形。某些字体甚至对三个字符序列(例如“ ffl”)进行连字。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句