【问题标题】:how to increase font size in UIWebView如何在 UIWebView 中增加字体大小
【发布时间】:2010-10-10 00:06:51
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c cocoa-touch uiwebview


    【解决方案1】:

    我有 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];
    }
    

    【讨论】:

    • 在调用此函数之前,请务必将 textFontSize 设置为初始值(可能为 100)。
    • 也可以设置...style.fontSize(或其他CSS属性)。在我的情况下,这意味着我不必在会话之间将比例转换回适当的字体大小。
    • 似乎只在 iPad 上的 iOS10 中损坏。任何人有任何修复或替代?谢谢!
    【解决方案2】:
    - (void)webViewDidFinishLoad:(UIWebView *)webView
    {
        NSString *fontSize=@"143";
        NSString *jsString = [[NSString alloc]      initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",[fontSize intValue]];
        [myWebview stringByEvaluatingJavaScriptFromString:jsString];
    
    }
    

    【讨论】:

      【解决方案3】:

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

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

      - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
      

      【讨论】:

      • 但是如果我通过 javascript 更改 CSS 属性,它会丢失我在增加/减少字体后阅读内容的位置。
      【解决方案4】:

      斯威夫特 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)%%'")
      }
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
      • 斯威夫特 3 webView.stringByEvaluatingJavaScript(from: "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(textSize)%%'")
      • 感谢@ArielGemilang。我根据您的建议更新了您。
      【解决方案5】:

      Swift 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()
          }
      }
      

      【讨论】:

      • 完美答案
      【解决方案6】:

      试试下面的代码:

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

      【讨论】:

        【解决方案7】:

        这是我在 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];
        

        【讨论】:

          【解决方案8】:

          试试这个简单的方法

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

          【讨论】:

          • 这不适用于 iPad 上的 iOS 10.1.1,还有其他选择吗?
          【解决方案9】:

          在我的情况下,我使用 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)
              }
          
          }
          

          【讨论】:

            【解决方案10】:

            在 SWIFT 中 -

            let fontSize = 20
            let fontSetting = "<span style=\"font-size: \(fontSize)\"</span>"
            webView.loadHTMLString( fontSetting + myHTMLString, baseURL: nil)
            

            【讨论】:

              【解决方案11】:

              通过在方法中将获取的 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 字符串: 跨度样式='字体大小:20px; 变成: span style='font-size: 40

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

              【讨论】:

                猜你喜欢
                • 2023-03-11
                • 1970-01-01
                • 1970-01-01
                • 2013-04-03
                • 2014-12-15
                • 1970-01-01
                • 2017-10-07
                • 2014-09-22
                • 2018-02-10
                相关资源
                最近更新 更多