0

私はこの解決策に従います

iOS で ePub Book のフォントの色とスタイルを変更するにはどうすればよいですか?

ただし、正しく動作しません。たとえば、このhtmlの部分では

<body>
<div id="HolubiPosta-E-2.html" xml:lang="cs-CZ">
<div class="Z-kladn--grafick--r-me-ek">
  <p class="Nazev para-style-override-3" id="toc_marker-2">Holubí pošta</p>

  <p class="Z-kladn--odstavec para-style-override-4"><span>Už od rána slunce sypalo hlava nehlava zlato.</span></p>

2 番目の段落のフォントを変更しますが、最初の段落のフォントは変更しません。

すべてのhtmlドキュメントでfont-familyを適切に変更するには?

編集:これは私が使用しているcss追加機能です

NSString *addCSSRule =  @"function addCSSRule(selector, newRule) {"
"if (mySheet.addRule) {"
"mySheet.addRule(selector, newRule);"                               // For Internet Explorer
"} else {"
"ruleIndex = mySheet.cssRules.length;"
"mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);"   // For Firefox, Chrome, etc.
"}"
"}";

これは私がそれを呼び出す方法です:

NSString *setTextFont = [NSString stringWithFormat:@"addCSSRule('html, body, div, p, span, a', 'font-family: %@;')", m_str_font_name];

[webView stringByEvaluatingJavaScriptFromString:setTextFont];

CSS:

p.Nazev {
font-family : "Liberation Serif", serif;
font-weight : normal;
font-style : normal;
font-size : 1.33em;
text-decoration : none;
font-variant : normal;
line-height : 1.2;
text-align : center;
color : #0000ff;
text-indent : 0px;
margin : 0px;}

p.para-style-override-3 {
margin-bottom : 28px;
margin-top : 28px;}

p.para-style-override-4 {
text-align : justify;}

div.Z-kladn--grafick--r-me-ek {}
4

1 に答える 1

1

ここにそれを行う1つの方法があります。iOSで動作確認できましたUIWebView。「セリフ」を好きなものに置き換えfont-familyます。

[self.contentView stringByEvaluatingJavaScriptFromString:
             @"var styleSheets = document.styleSheets;for( i=0; i < styleSheets.length; i++ ){for( j=0; j < styleSheets[i].cssRules.length; j++){var rule = styleSheets[i].cssRules[j]; rule.style['font-family'] = 'serif'}}"];

最もエレガントな方法ではありませんが、基本的には既存のすべてのルールをループし、フォント ファミリを設定します。

追加した新しい要素レベルのルールが、epub css で定義された既存のクラスレベルのルールによってオーバーライドされるために、問題が発生すると思います。

于 2013-07-03T12:03:31.407 に答える