如何更改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中添加颜色选项来改变字体的颜色。 这是完全可选的。