2013-07-03 33 views
0

我正在開發像ibook app這樣的iPhone應用程序。我在解析epub文件後得到的XML文件的內容爲UIWebView。我改變了字體大小&字體家族的內容UIWebView。我要更改字體大小& ePub book中所有頁面的字體系列。如何存儲UIWebView的設置,以便它適用於EPub書中的所有頁面。 這是我如何更改weview的字體的代碼。iPhone ePub Reader更改ePub中所有頁面的字體book不是當前webview內容

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]; 

回答

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]; 
} 
+0

感謝您的快速回復。它的工作! – poojathorat

+0

感謝您提及項目名稱「AePubReader」。這幫了我很多。 –

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)