NSTextView具有较长的NSMutableAttributedText低滚动和加载速度

时间:2014-06-22 21:13:40

标签: ios uitextview nsattributedstring nsmutableattributedstring

我有一个uitextview,大部分时间都应显示attributedtexts。我使用下面的代码创建我的属性文本:

 //Add each line of doa to an element of array for future usage
    NSArray *paragraphs = [self.Text componentsSeparatedByString:@"\r\n"];

    MixedContent= [[NSMutableAttributedString alloc]init];
    ArabicContent= [[NSMutableAttributedString alloc]init];
    TranslatedContent= [[NSMutableAttributedString alloc]init];

    NSString * temp=@"";

    for (int i=0; i< paragraphs.count; i++) {

        if([paragraphs[i] hasPrefix:@"$2."]){

            temp=  [paragraphs[i] stringByReplacingOccurrencesOfString:@"$2." withString:@"" options:1 range:NSMakeRange(0, 3)];

            NSMutableAttributedString* tempMutable=  [[NSMutableAttributedString alloc] initWithString:temp attributes:doaDescriptionAttributes];

            //Go to next line
            [tempMutable  appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@"\n\n"]];


            [ArabicContent appendAttributedString: tempMutable];

            [TranslatedContent appendAttributedString:tempMutable];

            [MixedContent appendAttributedString:tempMutable];


        }else if ([paragraphs[i] rangeOfString:@"$3."].location != NSNotFound){

            temp=  [paragraphs[i] stringByReplacingOccurrencesOfString:@"$3." withString:@"" options:1 range:NSMakeRange(0, 3)];

            NSMutableAttributedString* tempMutable=  [[NSMutableAttributedString alloc] initWithString:temp attributes:arabicDoaAttributes];

            [MixedContent appendAttributedString:tempMutable];
            [MixedContent  appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@"\n"]];

            [ArabicContent appendAttributedString:tempMutable];
            [ArabicContent appendAttributedString: [[NSMutableAttributedString alloc] initWithString:@" "]];

        }else if ([paragraphs[i] rangeOfString:@"$4."].location != NSNotFound){

            temp=  [paragraphs[i] stringByReplacingOccurrencesOfString:@"$4." withString:@"" options:1 range:NSMakeRange(0, 3)];

            NSMutableAttributedString* tempMutable=  [[NSMutableAttributedString alloc] initWithString:temp attributes:arabicDoaAttributes];

            [MixedContent appendAttributedString:tempMutable];
            [MixedContent  appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@"\n"]];

            [TranslatedContent appendAttributedString:tempMutable];
            [TranslatedContent appendAttributedString: [[NSMutableAttributedString alloc] initWithString:@" "]];
        }

        temp=nil;
    }

}

我的文字包含3种文字。一些描述。一些阿拉伯文本及其翻译。每个部分都以特定的颜色显示。

我使用此代码设置文本:

self.myTextView.attributedText= myAttributedText;

问题是,当我设置或更改此textview的文本时,应用程序设置或更新文本大约需要2秒钟。等待时间对我的用户来说并不好。

当我滚动文本视图时,它根本不是很好。它滚动一些段落,然后停下来然后滚动,停止和滚动,....

实际上滚动速度很慢。

有没有更好的方法来设置文本,以便我有更好的表现?

更新

我认为可以通过滚动加载文本。有些东西像懒惰的加载器列表但是对于uitextview。有可能吗?

更新

当我添加没有任何属性的文本时。 (我的意思是所有相同颜色的线条)滚动效果很好。

更新

这是关于文本的数量。当我减少文本量。例如,我设置500个字符而不是设置10000个字符,现在它非常快。我该如何解决?

0 个答案:

没有答案