26

UIWebView默认情况下WKWebView使用什么字体?我希望能够改变这一点。但我不想在 html 字符串中这样做,而是我想要类似的东西:

// obj-c
[webView setFont:[UIFont fontWithName:@"GothamRounded-Bold" size:14]

// swift
webView.setFont(UIFont(name: "GothamRounded-Bold", size: 14))

有没有这样的财产或其他方式?

4

10 回答 10

48

您可以使用您的UIFont对象(因此您可以更轻松地设置和修改它),但将 HTML 包装在 a 中span自 HTML 4.01 以来,font标签已被弃用

UIFont *font = [UIFont fontWithName:@"GothamRounded-Bold" size:14];

假设您已经NSString *htmlString创建了字体,您可以使用字体的属性:

htmlString = [NSString stringWithFormat:@"<span style=\"font-family: %@; font-size: %i\">%@</span>",
                                        font.fontName,
                                        (int) font.pointSize,
                                        htmlString];

或者,您可以只提供值而不是使用UIFont对象:

htmlString = [NSString stringWithFormat:@"<span style=\"font-family: %@; font-size: %i\">%@</span>",
                                        @"GothamRounded-Bold",
                                        14,
                                        htmlString];
于 2013-05-09T00:03:20.723 回答
23

只需<font face>在加载到 webView 之前为您的字符串添加一个标签。

NSString *body = [plist objectForKey:@"foo"];
NSString *htmlString = 
    [NSString stringWithFormat:@"<font face='GothamRounded-Bold' size='3'>%@", body];
[webView loadHTMLString:htmlString baseURL:nil];
于 2013-04-11T04:42:52.083 回答
20

您可以尝试通过注入一行 JavaScript 来设置字体,如下所示:

[webView stringByEvaluatingJavaScriptFromString: @"document.body.style.fontFamily = 'GothamRounded-Bold'"];
于 2012-09-22T15:19:56.993 回答
13

有 swift 3 解决方案:

func webViewDidFinishLoad(_ webView: UIWebView) {
    webView.stringByEvaluatingJavaScript(from: "document.getElementsByTagName('body')[0].style.fontFamily =\"-apple-system\"")
}

我刚刚为本示例添加了默认的 iOS 字体

于 2017-02-21T14:18:30.607 回答
8

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

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-18T03:10:11.917 回答
6

如果有人在 Swift 3 中寻找解决方案,我使用了这个(基于 jterry 的回答):

let font = UIFont.init(name: "Name-of-your-font", size: theSize)
self.newsWebView.loadHTMLString("<span style=\"font-family: \(font!.fontName); font-size: \(font!.pointSize); color: #21367B\">\(yourString)</span>", baseURL: nil)

请注意,在这里我不确定字体是否为零。在加载 HTML 字符串之前可以添加一个 nil 检查。在这里,我还通过在跨度样式中添加颜色选项来更改字体的颜色。这是完全可选的。

于 2017-08-23T18:13:35.630 回答
4

SWIFT 4.2 的快速解决方案

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

span 是一个内联元素,这意味着它可以与其他元素在一条线上

于 2019-03-05T10:13:07.453 回答
3

UIWebview使用在 HTML 中设置的字体。没有“默认字体”。即使没有特别提到字体,您也无权设置它。这一切都在我们无法访问的 WebKit 中。

于 2012-09-21T15:26:04.313 回答
3

对于 Swift,我在webViewDidFinishLoad

webView.stringByEvaluatingJavaScriptFromString("document.getElementsByTagName('body')[0].style.fontFamily =\"HelveticaNeue\"");
于 2016-09-05T09:18:51.193 回答
2
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
{
     webView.evaluateJavaScript("document.getElementsByTagName('body')[0].style.fontFamily =\"-apple-system\"")
     webView.evaluateJavaScript("document.getElementsByTagName('body')[0].style.fontSize = \"xx-large\"")
}

给熟悉 js 的人加分,把它折叠成一个单一的评估

在 wkwebview 中包装在 span 标签中的效果为零

于 2021-03-15T08:33:53.157 回答