我有一系列文本,其中包含粗体部分。这个粗体字或句子在哪里没有规则,所以我在必要时使用 webView 显示带有粗体标签的 html 字符串。现在我的 webViews 不会在任何地方滚动,有时文本不适合它们。
所以这是我的问题:
我想裁剪文本,使其适合我的 webView 并且裁剪不会在句子中间,而是如果不适合则裁剪整个句子。所以最后,文本应该以适合的最后一句话结尾。
我所做的是从 html 句子中去除 html 标签,计算文本占用的高度,然后删除文本的最后一部分,用“。”分隔。(点)如果它超过了要求的高度。
这是执行此操作的代码。
NSString *returnedString = [[[NSString alloc] initWithString:htmlText] autorelease];
CGSize a = [[returnedString stripHtml] sizeWithFont:font constrainedToSize:CGSizeMake(sizeToFit.width, 999)];
NSMutableArray *sentences = [[NSMutableArray alloc] initWithArray:[returnedString componentsSeparatedByString:@"."]];
while (a.height > sizeToFit.height) {
_lastTextExceededLimits = NO;
if (sentences.count > 1) {
// -2 because last sentence is not deletable and contains html tags
NSString *sentence2 = [sentences objectAtIndex:(sentences.count - 2)];
NSString *stringToReplace = [NSString stringWithFormat:@"%@%@",sentence2, @"."];
returnedString = [returnedString stringByReplacingOccurrencesOfString:stringToReplace withString:@""];
[sentences removeLastObject];
} else
returnedString = [returnedString stringByReplacingOccurrencesOfString:[sentences lastObject] withString:@""];
a = [[returnedString stripHtml] sizeWithFont:font constrainedToSize:CGSizeMake(sizeToFit.width, CGFLOAT_MAX)];
}
[sentences release];
return returnedString;