38

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

4

11 回答 11

73

我有 2 个按钮 - 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];
}
于 2009-11-24T14:07:52.290 回答
11
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *fontSize=@"143";
    NSString *jsString = [[NSString alloc]      initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",[fontSize intValue]];
    [myWebview stringByEvaluatingJavaScriptFromString:jsString];

}
于 2013-07-10T13:14:44.003 回答
9

目前没有公开的方式来直接操作 UIWebView 中的 DOM,也没有任何方便的方法来处理诸如字体大小之类的事情。我建议归档Radars

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

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
于 2009-02-26T06:08:28.843 回答
5

斯威夫特 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)%%'")
}
于 2015-08-27T11:40:41.717 回答
2

斯威夫特 5 更新。 这是来自@BLCs 建议的更新答案。

还修复了他的字符串中的双 %% 。

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    let textSize = 300
    let javascript = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(textSize)%'"
    webView.evaluateJavaScript(javascript) { (response, error) in
        print()
    }
}
于 2020-01-27T19:43:36.207 回答
1

试试下面的代码:

NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",currentTextSize];
[_webview stringByEvaluatingJavaScriptFromString:setTextSizeRule];
于 2013-06-19T10:35:26.510 回答
1

这是我在 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];
于 2013-08-25T22:42:03.090 回答
1

试试这个简单的方法

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    int fontValue = 150;
    NSString *webviewFontSize = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",fontValue];
    [your_webview stringByEvaluatingJavaScriptFromString:webviewFontSize];
}
于 2014-05-22T12:32:34.530 回答
1

在我的情况下,我使用 UISlider 作为字体大小,可以是任何浮点值

func webViewDidFinishLoad(_ webView: UIWebView) {

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

}
于 2017-04-12T22:12:06.407 回答
1

在 SWIFT 中——

let fontSize = 20
let fontSetting = "<span style=\"font-size: \(fontSize)\"</span>"
webView.loadHTMLString( fontSetting + myHTMLString, baseURL: nil)
于 2019-03-05T10:19:46.650 回答
0

通过在方法中将获取的 html 字符串中出现的字体大小更改为所需的字体大小(本示例中为 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;
}

所以html字符串:span style='font-size: 20px; 变为:span style='font-size: 40

注意:更改其他匹配项,例如 gt;、apos; 也可以将所需的字符串加载到您的 Webview 中。

于 2017-01-27T06:26:17.030 回答