如何更改UIWebView的默认字体

UIWebView默认使用什么字体? 我希望能够改变这一点。 但我不想在HTMLstring中做,而是我想有这样的东西:

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

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

在加载到webView之前,只需在您的string前添加一个<font face>标记即可。

 NSString *body = [plist objectForKey:@"foo"]; NSString *htmlString = [NSString stringWithFormat:@"<font face='GothamRounded-Bold' size='3'>%@", body]; [webView loadHTMLString:htmlString baseURL:nil]; 

你可以使用你的UIFont对象(所以你可以更容易地设置和修改),但是用一个span来代替HTML。 font标签自HTML 4.01以来已被弃用

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

假设你已经创build了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]; 

你可以尝试通过注入一行JavaScript来设置字体:

 [webView stringByEvaluatingJavaScriptFromString: @"document.body.style.fontFamily = 'GothamRounded-Bold'"]; 

有一个迅速的3解决scheme:

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

我刚刚把这个例子的默认的iOS字体

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

 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]; 

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

对于Swift,我在webViewDidFinishLoad使用了这个

 webView.stringByEvaluatingJavaScriptFromString("document.getElementsByTagName('body')[0].style.fontFamily =\"HelveticaNeue\""); 

如果有人在Swift 3中寻找解决scheme,我使用了这个(根据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) 

请注意,在这里我不确定字体不是零。 在加载HTMLstring之前可以添加一个空的检查。 在这里,我也通过在span中添加颜色选项来改变字体的颜色。 这是完全可选的。