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(そのため、より簡単に設定および変更できます) が、span代わりに HTML をラップします。fontタグは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];
于 2013-05-09T00:03:20.723 に答える
23

webView<font face>にロードする前に、文字列の前にタグを付けるだけです。

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 に答える
3

Swiftの場合、これを使用しますwebViewDidFinishLoad

webView.stringByEvaluatingJavaScriptFromString("document.getElementsByTagName('body')[0].style.fontFamily =\"HelveticaNeue\"");
于 2016-09-05T09:18:51.193 に答える
3

UIWebviewHTML で設定されているフォントを使用します。「デフォルトフォント」はありません。フォントが具体的に言及されていなくても、それを設定するためのアクセス権はありません。それはすべて WebKit の内部にあり、アクセスすることはできません。

于 2012-09-21T15:26:04.313 に答える
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\"")
}

これを 1 つの評価にまとめる js に精通している人々へのボーナス ポイント

span タグの折り返しは wkwebview で効果がありませんでした

于 2021-03-15T08:33:53.157 に答える