UITextView的替代(UITextView Alternative)

2019-10-17 12:30发布

当我从苹果文档了解attributedText的UITextView的属性:

此属性默认为零。 分配一个新值这个属性也替换文本属性的值具有相同字符串数据,尽管没有任何格式的信息。 此外,分配一个新的值在字体更新值,文字颜色和textAlignment属性,使它们反映了属性串在起始位置0的样式信息。

因此,我无法通过代码与在不同位置的多个属性添加构造一个AttributedString。

有人可以帮我创建通过代码在iOS6的下面的效果呢? 这是可能的使用笔尖文件,并通过更改属性范围在UITextView的文本部分,但我似乎无法重现的代码的效果。

< '字体systemFontOfSize = 18> 所需 <'/ FONT> 效果 < '文字颜色= [的UIColor redColor]> 要写入B''/文字颜色>ÿ代码

假设标记对应的属性。

PS我不希望因为我尝试使用与UITextView中的自动版式功能,使用CATextLayers。

Answer 1:

你可以建立包含所有你需要的属性的一个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将整个字符串,这是你要设法避免,遗憾的混乱的整个范围应用属性。



文章来源: UITextView Alternative