如果它不适合 webView (iphone),则从 html 字符串中裁剪最后一句

Posted

技术标签:

【中文标题】如果它不适合 webView (iphone),则从 html 字符串中裁剪最后一句【英文标题】:Crop last sentence from html string if it does not fit webView (iphone) 【发布时间】:2012-11-14 11:00:31 【问题描述】:

我有一个包含粗体部分的文本数组。这个粗体字或句子在哪里没有规则,所以我在必要时使用 webView 显示带有粗体标签的 html 字符串。现在我的 webViews 不能在任何地方滚动,有时文本不适合它们。

这是我的问题:

我想裁剪文本,使其适合我的 webView,并且裁剪不会位于句子的中间,而是会在不适合的情况下裁剪整个句子。所以最后,文本应该以适合的最后一句话结尾。

【问题讨论】:

【参考方案1】:

我所做的是从 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;

【讨论】:

以上是关于如果它不适合 webView (iphone),则从 html 字符串中裁剪最后一句的主要内容,如果未能解决你的问题,请参考以下文章

iPad上的WKWebView水平滚动

适用于所有移动设备的Webview App并上传到Play商店

iphone - 点击 WebView 上的手势与点击的链接冲突

WebView自动缓存-清除缓存

iPhone:等待 webview 在自动化测试中加载

如果url有效,如何检查iphone应用程序然后加载WebVIew else show alert