46

我必须显示我从服务器中提取的富文本,所以我使用的是 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 的其他替代方案。

谢谢

4

9 回答 9

103

当我像这样修改字符串时它起作用了。你的权利克里斯,它不应该有任何区别。

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];
于 2009-01-17T06:10:35.243 回答
22

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

于 2009-01-16T08:23:43.953 回答
15

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

body
{
    font-family:helvetica;
}

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

克里斯。

于 2009-01-16T14:44:46.067 回答
11

系统字体

-iOS 9 和 Safari OS X 10 上的苹果系统

font-family: -apple-system;
font-family: '-apple-system','HelveticaNeue'; // iOS 8 compatible
于 2015-12-08T04:50:29.580 回答
10

我制作了一个方法,它使用给定的正确样式将一些文本包装在 HTML 正文中UIColorUIFont. 它基于Mustafa 的回答

它是这样使用的:

NSString * htmlString = [MyClass htmlFromBodyString:@"an <b>example</b>"
                                           textFont:[UIFont systemFontOfSize:10]
                                          textColor:[UIColor grayColor]];
[webView loadHTMLString:htmlString baseURL:nil];
于 2014-01-30T15:43:14.320 回答
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];
于 2014-07-04T07:50:57.467 回答
4

只是改变

font:helvetica

font-family:helvetica

于 2010-02-09T04:19:37.977 回答
2

我用

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

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

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

于 2012-02-05T13:17:38.003 回答
2

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

                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];
于 2014-05-18T02:58:34.793 回答