如何在UIWebView中增加字体大小

如何增加或减lessUIWebview字体大小,不使用scalePageToFit:NO;

我有2个button – A-和A +

@interface NSUInteger textFontSize; - (IBAction)changeTextFontSize:(id)sender { switch ([sender tag]) { case 1: // A- textFontSize = (textFontSize > 50) ? textFontSize -5 : textFontSize; break; case 2: // A+ textFontSize = (textFontSize < 160) ? textFontSize +5 : textFontSize; break; } NSString *jsString = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'", textFontSize]; [web stringByEvaluatingJavaScriptFromString:jsString]; [jsString release]; } 

目前在UIWebView中没有直接操作DOM的暴露方式,也没有任何处理字体大小的方便方法。 我build议提交雷达 。

话说回来。 您可以通过更改CSS来修改字体大小,就像任何其他网页一样。 如果这是不可能的(你不控制内容),你可以编写一个小的JavaScript函数来改变页面DOM中的CSS属性,并通过调用:

 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script; 
 - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *fontSize=@"143"; NSString *jsString = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",[fontSize intValue]]; [myWebview stringByEvaluatingJavaScriptFromString:jsString]; } 

Swift 3

 public func webViewDidFinishLoad(_ webView: UIWebView) { let textSize: Int = 300 webView.stringByEvaluatingJavaScript(from: "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(textSize)%%'") } 

老斯威夫特

 func webViewDidFinishLoad(webView: UIWebView) { let textSize: Int = 300 webView.stringByEvaluatingJavaScriptFromString("document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(textSize)%%'") } 

试试下面的代码:

 NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",currentTextSize]; [_webview stringByEvaluatingJavaScriptFromString:setTextSizeRule]; 

这是我的UIWebView中更改字体大小和颜色:

  NSString *myString=@"Hello World!"; int textFontSize=2; NSString *myHTML=[NSString stringWithFormat: @"<html><body><script>var str = '%@'; document.write(str.fontsize(%d).fontcolor('green'));</script></body></html>",myString,textFontSize]; [myWebView loadHTMLString:myHTML baseURL:nil]; 

试试这个简单的方法

 - (void)webViewDidFinishLoad:(UIWebView *)webView { int fontValue = 150; NSString *webviewFontSize = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",fontValue]; [your_webview stringByEvaluatingJavaScriptFromString:webviewFontSize]; } 

通过将获取的htmlstring中的字体大小更改为所需的字体大小(本例中为40),更改获取的HTML数据的字体大小。

 strHtml = [self htmlEntityDecode:strHtml];//parsing the html string -(NSString *)htmlEntityDecode:(NSString *)string { string = [string stringByReplacingOccurrencesOfString:@"14px;" withString:@"40"]; string = [string stringByReplacingOccurrencesOfString:@"15px;" withString:@"40"]; string = [string stringByReplacingOccurrencesOfString:@"16px;" withString:@"40"]; string = [string stringByReplacingOccurrencesOfString:@"17px;" withString:@"40"]; string = [string stringByReplacingOccurrencesOfString:@"18px;" withString:@"40"]; string = [string stringByReplacingOccurrencesOfString:@"19px;" withString:@"40"]; string = [string stringByReplacingOccurrencesOfString:@"20px;" withString:@"40"]; return string; } 

所以htmlstring:span style ='font-size:20px; 成为:span style ='font-size:40

注意:改变其他事件像GT, 也得到所需的string加载在您的Webview。

在我的情况下即使用UISlider的fontSize,可以是任何浮点值

 func webViewDidFinishLoad(_ webView: UIWebView) { if let fontSize: Float = (self.fontSizeSlider?.value) { webView.stringByEvaluatingJavaScript(from: "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(fontSize)%%'") print(fontSize) } }