【问题标题】:iPhone Development - Setting UIWebView fontiPhone 开发 - 设置 UIWebView 字体
【发布时间】:2010-10-01 18:37:30
【问题描述】:

我必须显示从服务器提取的富文本,所以我使用的是 UIWebView。现在的问题是我无法控制 UIWebView 中使用的字体。如何更改字体以使用系统字体(使其与应用程序的其余部分保持一致)?

我现在正在做这样的事情:

myRichTextView = [[UIWebView alloc] initWithFrame:CGRectMake(x, y, width, height)];
myRichTextView.backgroundColor = [UIColor clearColor];
[myRichTextView setScalesPageToFit:NO];
[myRichTextView loadHTMLString:myString baseURL:[NSURL URLWithString:myBaseURL]];

再次,需要控制显示字体。如果我无法控制字体,请告诉我 UIWebView 的其他替代方案。

谢谢

【问题讨论】:

  • 如果您从服务器拉取,myString 的字符串是什么?不是所有的文本都来自服务器吗?

标签: iphone uiwebview


【解决方案1】:

当我像这样修改字符串时它起作用了。你对的克里斯,应该没什么区别。

NSString *myDescriptionHTML = [NSString stringWithFormat:@"<html> \n"
                                "<head> \n"
                                "<style type=\"text/css\"> \n"
                                "body {font-family: \"%@\"; font-size: %@;}\n"
                                "</style> \n"
                                "</head> \n"
                                "<body>%@</body> \n"
                                "</html>", @"helvetica", [NSNumber numberWithInt:kFieldFontSize], content];

【讨论】:

  • 好的,没错。只是另一个疑问,哪个HTML字体相当于ios中的“SystemFont”?希望它不是一个大问题,作为一个新问题发布......
  • 我一直在等待苹果让用户更改系统字体。所以我更进一步。我做了一个UIFont *font = [UIFont systemFontOfSize:21]; 而不是硬编码@"helvetica" 我输入font.familyName
  • @DBD 从 iOS9 开始,fontName 将类似于 .SFUIText-Regular,它不适用于 HTML
【解决方案2】:

在您的 HTML 文档中引用 css 样式表或将样式信息放在 HTML 文档本身的顶部

【讨论】:

    【解决方案3】:

    我在 Web 视图中使用以下 CSS 来完全按照您所说的进行操作。

    body
    {
        font-family:helvetica;
    }
    

    但是你的看起来应该也可以。奇怪的。我能看到的唯一区别是字体与字体系列,但这不应该有所作为。

    克里斯。

    【讨论】:

    • 是的,这行得通。此外,如果字体名称中有空格,则需要将其放在引号中,例如“helvetica neue”、san-serif
    【解决方案4】:

    系统字体

    -apple-system 在 iOS 9 和 Safari OS X 10 上

    font-family: -apple-system;
    font-family: '-apple-system','HelveticaNeue'; // iOS 8 compatible
    

    【讨论】:

      【解决方案5】:

      I made a method 将一些文本包装在 HTML 正文中,并具有给定 UIColorUIFont 的正确样式。它基于Mustafa answer

      它是这样使用的:

      NSString * htmlString = [MyClass htmlFromBodyString:@"an <b>example</b>"
                                                 textFont:[UIFont systemFontOfSize:10]
                                                textColor:[UIColor grayColor]];
      [webView loadHTMLString:htmlString baseURL:nil];
      

      【讨论】:

      • 感谢您的方法! @Robert 这很有用!
      • 完美运行。谢谢!
      【解决方案6】:

      另一种对我有用的简单方法

          UIFont *font = [UIFont systemFontOfSize:15];
      
            NSString *htmlString = [NSString stringWithFormat:@"<span style=\"font-family:Helvetica; font-size: %i\">%@</span>",
                           (int) font.pointSize,
                           [bodyText stringWithNewLinesAsBRs]];
             [myWebView loadHTMLString:htmlString baseURL:nil];
      

      【讨论】:

        【解决方案7】:

        改变一下

        font:helvetica

        font-family:helvetica

        【讨论】:

          【解决方案8】:

          我用

          body {
                  font-family: 'Noteworthy-Bold';
              }
          

          这适用于我的 about-page (WebView),因为我的应用程序的其余部分也使用 Apple 的“Noteworthy-Bold”。

          如果您想使用自己的字体,请使用 @font-face 并参考 TTF 或 EOT 文件。

          【讨论】:

            【解决方案9】:

            这是我的易于使用且易于扩展的解决方案,具有更多字体设置:

                            myHTMLLabel = [[UIWebView alloc] initWithFrame:CGRectMake(myX,myY,myWidth,myHeight)];
            
                            myHTMLLabel.userInteractionEnabled=NO;
                            myHTMLLabel.scalesPageToFit=NO;
            
                            [myHTMLLabel setOpaque:NO];
                            myHTMLLabel.backgroundColor = myBackColor;
            
                            NSString *myHTMLText = [NSString stringWithFormat:@"<html>"
                                                    "<head><style type='text/css'>"
                                                    ".main_text {"
                                                    "   display: block;"
                                                    "   font-family:[fontName];"
                                                    "   text-decoration:none;"
                                                    "   font-size:[fontSize]px;"
                                                    "   color:[fontColor];"
                                                    "   line-height: [fontSize]px;"
                                                    "   font-weight:normal;"
                                                    "   text-align:[textAlign];"
                                                    "}"
                                                    "</style></head>"
                                                    "<body> <SPAN class='main_text'>[text]</SPAN></body></html>"];
            
                            myHTMLText = [myHTMLText stringByReplacingOccurrencesOfString: @"[text]" withString: myText];
                            myHTMLText = [myHTMLText stringByReplacingOccurrencesOfString: @"[fontName]" withString: myFontName];
                            myHTMLText = [myHTMLText stringByReplacingOccurrencesOfString: @"[fontSize]" withString: myFontSize];           
                            myHTMLText = [myHTMLText stringByReplacingOccurrencesOfString: @"[fontColor]" withString: myFontColorHex];
                            myHTMLText = [myHTMLText stringByReplacingOccurrencesOfString: @"[textAlign]" withString: myFontAlign];
            
            
                            NSLog(@"*** renderHTMLText --> myHTMLText: %@",myHTMLText);
            
                            [myHTMLLabel loadHTMLString:myHTMLText baseURL:nil];
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-04-15
              • 1970-01-01
              • 2011-02-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多