UIWebView默认使用什么字体?我希望能够改变这一点。但我不想这样做的HTML字符串,而是我想有这样的事情:如何更改UIWebView默认字体
[webView setFont:[UIFont fontWithName:@"GothamRounded-Bold" size:14]
有没有这样的属性或其他方式?
UIWebView默认使用什么字体?我希望能够改变这一点。但我不想这样做的HTML字符串,而是我想有这样的事情:如何更改UIWebView默认字体
[webView setFont:[UIFont fontWithName:@"GothamRounded-Bold" size:14]
有没有这样的属性或其他方式?
加载到web视图之前就在它前面加上<font face>
标签的字符串。
NSString *body = [plist objectForKey:@"foo"];
NSString *htmlString =
[NSString stringWithFormat:@"<font face='GothamRounded-Bold' size='3'>%@", body];
[webView loadHTMLString:htmlString baseURL:nil];
UIWebview
使用在HTML中设置的字体。没有'默认字体'。即使没有特别提及字体,您也无法设置它。它都在WebKit中,我们无法访问它。
嗯,太糟糕了。在UITextView中使用setFont属性会很方便。 –
有一个默认字体。所有Web浏览器都有一个默认的字体,当没有指定字体时使用。无论是否可定制都是问题,看起来答案是否定的。 – devios1
您可以尝试通过注入一行JavaScript这样的设置字体:
[webView stringByEvaluatingJavaScriptFromString: @"document.body.style.fontFamily = 'GothamRounded-Bold'"];
对于字体大小:[webView stringByEvaluatingJavaScriptFromString:@“document.getElementsByTagName('body')[0] .style.fontSize ='15px'”]; –
确保您调用上述脚本_after_加载网页内容,例如来自委托人的webViewDidFinishLoad方法。 – pipacs
您可以使用UIFont
对象(这样你就可以将其设置和修改更容易),但包裹在span
而不是HTML; font
标签have been deprecated自HTML 4.01。
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];
这是我易于使用且易于扩展的解决方案,提供更多的字体设置:
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];
对于斯威夫特,我用这一个在webViewDidFinishLoad
webView.stringByEvaluatingJavaScriptFromString("document.getElementsByTagName('body')[0].style.fontFamily =\"HelveticaNeue\"");
如果有人在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字符串之前可以添加一个零检查。 在这里,我还通过在span范围的样式中添加颜色选项来更改字体的颜色。这完全是可选的。
*旁注:*它的工作原理,但字体标签已被弃用很久以前,正如其他答案所建议的。总之,不要使用''标签 – Raptor
这也是一个可怕的解决方案,因为你保证会破坏HTML。您将要将和标签包装在外部标签中,这很恐怖。即使它发生了*工作,因为浏览器足够宽容,这并不是原谅这种设计,恕我直言。 – devios1