Au *_*Ris 21 objective-c uiwebview ios swift wkwebview
UIWebView默认使用什么字体?我希望能够改变这一点.但我不想在html字符串中这样做,而是希望有类似的东西:
// obj-c
[webView setFont:[UIFont fontWithName:@"GothamRounded-Bold" size:14]
// swift
webView.setFont(UIFont(name: "GothamRounded-Bold", size: 14))
Run Code Online (Sandbox Code Playgroud)
有这样的财产还是其他方式?
jte*_*rry 45
您可以使用您的UIFont对象(这样您可以设置它并更容易地修改),但是将HTML包装起来span; 自HTML 4.01以来,已弃用font标记.
UIFont *font = [UIFont fontWithName:@"GothamRounded-Bold" size:14];
Run Code Online (Sandbox Code Playgroud)
假设您已经NSString *htmlString创建了,则可以使用字体的属性:
htmlString = [NSString stringWithFormat:@"<span style=\"font-family: %@; font-size: %i\">%@</span>",
font.fontName,
(int) font.pointSize,
htmlString];
Run Code Online (Sandbox Code Playgroud)
或者,您可以只提供值而不是使用UIFont对象:
htmlString = [NSString stringWithFormat:@"<span style=\"font-family: %@; font-size: %i\">%@</span>",
@"GothamRounded-Bold",
14,
htmlString];
Run Code Online (Sandbox Code Playgroud)
Tij*_*Kez 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];
Run Code Online (Sandbox Code Playgroud)
Wil*_*Niu 20
您可以尝试通过注入一行JavaScript来设置字体,如下所示:
[webView stringByEvaluatingJavaScriptFromString: @"document.body.style.fontFamily = 'GothamRounded-Bold'"];
Run Code Online (Sandbox Code Playgroud)
Kev*_*OUX 10
有快速3解决方案:
func webViewDidFinishLoad(_ webView: UIWebView) {
webView.stringByEvaluatingJavaScript(from: "document.getElementsByTagName('body')[0].style.fontFamily =\"-apple-system\"")
}
Run Code Online (Sandbox Code Playgroud)
我刚刚为此示例添加了默认的iOS字体
这是我易于使用且易于扩展的解决方案,具有更多字体设置:
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];
Run Code Online (Sandbox Code Playgroud)
万一有人在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)
Run Code Online (Sandbox Code Playgroud)
请注意,在这里我不确定字体是否为nil。可以在加载HTML字符串之前添加nil检查。在这里,我还通过在跨度样式中添加color选项来更改字体的颜色。这是完全可选的。
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)
Run Code Online (Sandbox Code Playgroud)
span 是一个内联元素,这意味着它可以与其他元素在同一行
| 归档时间: |
|
| 查看次数: |
42758 次 |
| 最近记录: |