正如我从Apple docs UITextView的attributesText属性中所理解的那样:
默认情况下,此属性为零。为此属性分配新值也会使用相同的字符串数据替换text属性的值,尽管没有任何格式信息。此外,分配新的值会更新font,textColor和textAlignment属性中的值,以便它们反映从属性字符串中的位置0开始的样式信息。
因此,我无法通过在不同位置具有多个属性的代码添加一个attributionString。
有人可以帮我用iOS6中的代码创建以下效果吗?这可以使用nib文件和更改UITextView中文本部分的范围属性,但我似乎无法通过代码重现效果。
<'font systemFontOfSize = 18> 所需<'/ font> 效果<'textColor = [UIColor redColor]> 要写b <'/ textColor> y code 。
假设标签对应于属性。
P.S。我不想使用CATextLayers,因为我试图在UITextView中使用AutoLayout功能。
答案 0 :(得分:4)
您可以使用包含所需所有属性的NSDictionary构建NSAttributedString:
NSAttributedString* attString = [[NSAttributedString alloc]
initWithString: @"Desired effect to be written by code"
attributes: (NSDictionary*)attributes];
或者使用它的可变子类NSMutableAttributedString:
NSMutableAttributedString *attString = [[NSMutableAttributedString alloc]
initWithString: @"Desired effect to be written by code"];
[attString addAttribute: NSForegroundColorAttributeName
value: [UIColor redColor]
range: NSMakeRange(15,15)];
...等
然后...
myTextView.attributedText = attString;
每个属性都应用于字符串的NSRange(位置,长度)。不同的属性类型(例如颜色,字体大小)可以重叠不同的范围。
<强>更新强>
使用NSMutableAttributedString示例。 NSAttributedString's initWithString:attributes
将在字符串的整个范围内应用属性,这是您要避免的,抱歉混淆。