0

我正在开发像 ibook 应用程序这样的 iphone 应用程序。我加载了XML在解析 epub 文件后获得的文件UIWebView内容。我更改了内容的字体大小和字体系列。UIWebView我想更改所有的字体大小和字体系列ePub book 中的页面。如何存储设置,UIWebView以便将其应用于 EPub book 中的所有页面。这是我如何更改 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 回答