UITextView使用NSAttributedString时自动调整文本大小

时间:2013-03-28 06:47:49

标签: ios objective-c uitextview nsattributedstring

UITextView文字中

在突出显示文本之前,其显示的文字大小为16.(在第一张图片中)

使用NSAttributedString突出显示后。突出显示的文本仅显示相同大小(16)的剩余字符串显示小于原始大小(第二个。

仅在iPodiPhone欺骗中出现此问题。 iPad显示格式正确。

enter image description here

代码突出显示UITextView文字

 NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:[UIFont fontWithName:@"Arial" size:currentTextSize] forKey:NSFontAttributeName];

    NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:txtview4disp.text];

 int startind=[[dict objectForKey:@"BeginIndexPos"]integerValue];
        int endind=[[dict objectForKey:@"EndIndexPos"]integerValue];
        NSRange rang;
        if (startind>=STARTINDEX&&startind<=ENDINDEX) {
            if (endind>ENDINDEX) {
                int endind2=endind-ENDINDEX;
                rang=NSMakeRange(startind-STARTINDEX, (endind-startind)-endind2);   
            }
            else
                rang=NSMakeRange(startind-STARTINDEX, endind-startind);


        [attrString addAttributes:attrsDictionary range:rang];

        [attrString addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:rang];

   txtview4disp.attributedText=attrString;

enter image description here

1 个答案:

答案 0 :(得分:1)

您似乎跳过了UITextView的原始属性。 尝试替换此行:

NSMutableAttributedString *attrString =
[[NSMutableAttributedString alloc] initWithString:txtview4disp.text];

以下:

NSMutableAttributedString *attrString =
[[NSMutableAttributedString alloc] initWithAttributedString:txtview4disp.attributedText];