Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITextView文本中的颜色变化_Iphone_Ios_Uitextview - Fatal编程技术网

Iphone UITextView文本中的颜色变化

Iphone UITextView文本中的颜色变化,iphone,ios,uitextview,Iphone,Ios,Uitextview,我是iPhone的新手 我有一个文本视图。我正在文本视图中更改选定文本的背景色 但问题是,当我在textView中选择多行时,只更改第一行的颜色,而不更改其他行的颜色 那么,有人能告诉我如何改变我选择的所有文本的背景色吗 tagValue = textView.tag; NSRange r = textView.selectedRange; UITextRange *selectedRange = [textView selectedTextRange]; if

我是iPhone的新手

我有一个文本视图。我正在文本视图中更改选定文本的背景色

但问题是,当我在textView中选择多行时,只更改第一行的颜色,而不更改其他行的颜色

那么,有人能告诉我如何改变我选择的所有文本的背景色吗

 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
    MIN
    创建覆盖所有文本的单个rect

替代方法
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]