0

ibook アプリのような iphone アプリを開発しています。epubXMLファイルを解析した後に取得したファイルの内容を読み込みます。コンテンツUIWebViewのフォント サイズとフォント ファミリUIWebViewを変更しました。すべてのフォント サイズとフォント ファミリを変更したいePub ブックのページ。 の設定を保存してUIWebView、EPub ブックのすべてのページに適用する方法。weview のフォントを変更するコードは次のとおりです。

NSString *yourHTMLSourceCodeString = [App_delegate.webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];

[App_delegate.webView loadHTMLString:[NSString stringWithFormat:@"<div style=' font-family:Times New Roman;'>%@",yourHTMLSourceCodeString] baseURL:nil];
4

2 に答える 2

2

このプロジェクトhttps://github.com/fedefrappi/AePubReaderを確認してください。fontName と fontSize の値を NSUserDefaults に保存し、webView デリゲート メソッド webViewDidFinishLoad に CSS ルールを追加するだけです。

- (void)webViewDidFinishLoad:(UIWebView *)theWebView{

    NSString *fontName = [[NSUserDefault standartUserDefaults] objectForKey:@"fontName"];
    NSNumber *currentTextSize = [[NSUserDefault standartUserDefaults] objectForKey:@"currentTextSize"];

    NSString *varMySheet = @"var mySheet = document.styleSheets[0];";

    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 *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')", [currentTextSize floatValue]];
    NSString *setFont = [NSString stringWithFormat:@"addCSSRule('body', 'font-family:%@;')", fontName];


    [theWebView stringByEvaluatingJavaScriptFromString:varMySheet];

    [theWebView stringByEvaluatingJavaScriptFromString:addCSSRule];

    [theWebView stringByEvaluatingJavaScriptFromString:setTextSizeRule];

    [theWebView stringByEvaluatingJavaScriptFromString:setFont];
}
于 2013-07-03T05:45:54.530 に答える
0

投稿は古すぎますが、上記の回答は私を大いに助けてくれましたが、Swiftでこれを行っているときに問題に直面しました。したがって、この答えは誰かの時間を節約できるかもしれません。

let varMySheet = "var mySheet = document.styleSheets[0];"

let addCSSRule = "function addCSSRule(selector, newRule) {if (mySheet.addRule) {mySheet.addRule(selector, newRule);} else { ruleIndex = mySheet.cssRules.length;mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);}}"

let setTextSizeRule = "addCSSRule('body', '-webkit-text-size-adjust: \(fontPercentage)%;')"


self.webView.stringByEvaluatingJavaScriptFromString(varMySheet)
self.webView.stringByEvaluatingJavaScriptFromString(addCSSRule)
self.webView.stringByEvaluatingJavaScriptFromString(setTextSizeRule)

fontPercentageは私のクラスの変数です。デフォルト値は 100 で、増減できます。

fontSize を単純に更新するために、「-webkit-text-size-adjust」プロパティを使用しています。そして、次のコードで十分です。

let textSizeRule = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(fontPercentage)%'"
self.webView.stringByEvaluatingJavaScriptFromString(textSizeRule)
于 2015-09-29T06:42:38.553 に答える