UITextView替代
正如我从Apple Docs UITextView的attributesText属性理解:
该属性默认为零。 为这个属性指定一个新的值也可以用相同的string数据replacetext属性的值,尽pipe没有任何格式化信息。 另外,赋值一个新值将更新字体,textColor和textAlignment属性中的值,以便它们反映属性string中从位置0开始的样式信息。
因此,我不能通过具有多个属性的代码在不同位置添加属性string。
有人可以帮助我通过代码在iOS6中创build以下效果? 这是可能的使用笔尖文件和更改UITextView中的文本部分的范围属性,但我似乎无法通过代码重现效果。
<'font systemFontOfSize = 18> 期望的 </ font> 效果 <'textColor = [UIColor redColor]> 被写入b <'/ textColor> y代码 。
假设标签对应于属性。
PS我不想使用CATextLayers,因为我想用UITextView的AutoLayoutfunction。
你可以用NSDictionary构build一个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;
每个属性都应用于string的NSRange(位置,长度)。 不同的属性types(如颜色,字体大小)可以重叠不同的范围。
更新
使用NSMutableAttributedString示例。 NSAttributedString's initWithString:attributes
会在string的整个范围内应用属性,这就是你想要避免的,对于混淆抱歉。