Iphone UITextView文本中的颜色变化
我是iPhone的新手 我有一个文本视图。我正在文本视图中更改选定文本的背景色 但问题是,当我在textView中选择多行时,只更改第一行的颜色,而不更改其他行的颜色 那么,有人能告诉我如何改变我选择的所有文本的背景色吗Iphone UITextView文本中的颜色变化,iphone,ios,uitextview,Iphone,Ios,Uitextview,我是iPhone的新手 我有一个文本视图。我正在文本视图中更改选定文本的背景色 但问题是,当我在textView中选择多行时,只更改第一行的颜色,而不更改其他行的颜色 那么,有人能告诉我如何改变我选择的所有文本的背景色吗 tagValue = textView.tag; NSRange r = textView.selectedRange; UITextRange *selectedRange = [textView selectedTextRange]; if
tagValue = textView.tag;
NSRange r = textView.selectedRange;
UITextRange *selectedRange = [textView selectedTextRange];
if (!selectedRange)
return;
CGRect result1 = [textView firstRectForRange:selectedRange];
frame_selectedText = result1;
self.str_selected =[NSString stringWithFormat:@"%@", [textView.text substringWithRange:NSMakeRange(r.location, r.length)]];
UIButton *btnView = [UIButton buttonWithType:UIButtonTypeCustom];
[btnView setFrame:result1];
[btnView addTarget:self action:@selector(buttonColorClicked:) forControlEvents:UIControlEventTouchUpInside];
btnView.backgroundColor = [UIColor colorWithRed:220.0f/255.0f green:248.0f/255.0f blue:188.0f/255.0f alpha:0.5];
[textView addSubview:btnView];
发生这种情况的原因是
firstRectForRange
将为您提供一个不超过一行的矩形。只要文本/所选文本保持在一行中,rect将覆盖该行
原因是:假设您选择的文本跨度为一行半。因此,当您选择文本时,选择颜色将显示选择边界不是矩形。它更像一个倒L。因此,单个矩形不能覆盖它
- 如果只想突出显示选定的文本,则必须使用多个矩形。查看我的代码。我已经讨论了多行,以及不同矩形的单词。您可以设置颜色和透明度(
)以提供高亮显示的感觉。但这里的缺点是,您将无法与该文本交互alpha
- 如果要创建覆盖所有选定文本的单个矩形,则它将覆盖选定文本之后的文本,但您可以使用单个矩形。为此,您必须使用
两次。在选定文本的最后一行中选定的第一个单词上单击一次,在选定文本的最后一行中选定的第一个单词上单击第二次。使用firstRectForRange
和MAX
创建覆盖所有文本的单个rectMIN
UITextView
s支持AttributedText
s。使用此选项,您可以使用具有多个属性(粗体、斜体、彩色文本、彩色背景等)的字符串设置UITextView
。使用nsmutableAttributedString
存储文本。添加如下属性:
[myAttriButedText addAttribute:NSBackgroundColorAttributeName value:UIColorFromRGB(0x333333) range:NSMakeRange(0, [myAttriButedText length])];
并使用
setAttributedText
或textView.attributedText=
设置UITextView
的文本。通过这种方式,您可以轻松地在文本上添加背景色,而无需进行上述操作。但是如果您想要的不仅仅是NSAttributedString
s所支持的属性,那么您必须使用上述方法。您可以向我们展示一些代码,比如您实际如何设置颜色吗?我添加了我的代码,dis是我尝试设置颜色的方式……嗯。。我试试你的代码。。因为我使用了NSMutableAttributedString,问题是,我不知道y,它的nt调用它的实例方法在UITextView
的实例方法中?会发生什么?它崩溃了吗,或者你不能调用textView.text的实例方法?你能告诉我吗?在你的代码中,这一行中的“单词”是什么意思(int i=0;iNo,NSMutableAttributedString的实例方法,当我创建其对象并尝试调用其实例方法时,如addAttribute:NSBackgroundColorAttributeName值:UIColorFromRGB(0x333333)范围:NSMakerRange(0,[MyAttributeText length]),我收到一条关于“此实例方法不存在…”的警告类似这样的东西是的。这是因为UIColorFromRGB是我在代码中定义的宏。我以前没有指出它的错误。可以使用:#define UIColorFromRGB(rgbValue)[UIColor\colorWithRed:((float)((rgbValue&0xFF0000)>>16))/255.0\green:((float)((rgbValue&0xFF00)>>8))/255.0\blue:((float)(rgbValue&0xFF))/255.0 alpha:1.0]
或使用简单的UIColor
如[UIColor blueColor]