我有一个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 秒。等待时间对我的用户不利。
此外,当我滚动 textview 时,它一点也不好。它滚动一些段落,然后停止然后滚动,停止和滚动,....
实际上滚动很慢。
有没有更好的方法来设置文本以便我有更好的表现?
更新
我在想是否可以通过滚动来加载文本。一些像惰性加载器列表但用于 uitextview 的东西。可能吗?
更新
当我添加没有任何属性的文本时。(我的意思是所有具有相同颜色的线条)滚动效果很好。
更新
这是关于文本的数量。当我减少文本量时。例如,我没有设置 10000 个字符,而是设置了 500 个字符,现在它非常快。我该如何解决?