web-dev-qa-db-ja.com

UIWebViewでフォントサイズを大きくする方法

scalePageToFit:NOを使用せずに、UIWebviewのフォントサイズを増減する方法

37
Bala

私は2つのボタンを持っています-A-とA +

@interface
NSUInteger textFontSize;

- (IBAction)changeTextFontSize:(id)sender
{
    switch ([sender tag]) {
        case 1: // A-
            textFontSize = (textFontSize > 50) ? textFontSize -5 : textFontSize;
            break;
        case 2: // A+
            textFontSize = (textFontSize < 160) ? textFontSize +5 : textFontSize;
            break;
    }

    NSString *jsString = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'", 
                          textFontSize];
    [web stringByEvaluatingJavaScriptFromString:jsString];
    [jsString release];
}
73
Taras Kalapun
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *fontSize=@"143";
    NSString *jsString = [[NSString alloc]      initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",[fontSize intValue]];
    [myWebview stringByEvaluatingJavaScriptFromString:jsString];

}
11
Girish Chauhan

現在、UIWebViewでDOMを直接操作するための公開された方法も、フォントサイズなどを処理するための便利なメソッドもありません。私は レーダー を提出することをお勧めします。

そうは言っても。他のウェブページと同様に、CSSを変更してフォントサイズを変更できます。それが不可能な場合(コンテンツを制御しない場合)は、小さなJavaScript関数を記述して、ページDOMのCSSプロパティを変更し、次の呼び出しによって実行できます。

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
9
Louis Gerbarg

Swift

public func webViewDidFinishLoad(_ webView: UIWebView) {        
    let textSize: Int = 300
    webView.stringByEvaluatingJavaScript(from: "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(textSize)%%'")
}

Old Swift

func webViewDidFinishLoad(webView: UIWebView) {
    let textSize: Int = 300

    webView.stringByEvaluatingJavaScriptFromString("document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(textSize)%%'")
}
5
BLC

In Swift 4-

let fontSize = 20
let fontSetting = "<span style=\"font-size: \(fontSize)\"</span>"
webView.loadHTMLString( fontSetting + myHTMLString, baseURL: nil)
2
Jack

UIWebViewでフォントサイズと色を変更する方法は次のとおりです。

 NSString *myString=@"Hello World!";
 int textFontSize=2;
 NSString *myHTML=[NSString stringWithFormat: @"<html><body><script>var str = '%@'; document.write(str.fontsize(%d).fontcolor('green'));</script></body></html>",myString,textFontSize];    
 [myWebView loadHTMLString:myHTML baseURL:nil];
1
DavidNg

以下のコードを試してください:

NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",currentTextSize];
[_webview stringByEvaluatingJavaScriptFromString:setTextSizeRule];
1
Hiren

この簡単な方法を試してください

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    int fontValue = 150;
    NSString *webviewFontSize = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",fontValue];
    [your_webview stringByEvaluatingJavaScriptFromString:webviewFontSize];
}
1

私の場合、fontSizeにUISliderを使用しているため、任意の浮動小数点値を使用できます

func webViewDidFinishLoad(_ webView: UIWebView) {

    if let fontSize: Float = (self.fontSizeSlider?.value) {
        webView.stringByEvaluatingJavaScript(from: "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(fontSize)%%'")
        print(fontSize)
    }

}
1
johnny

Swift 5 Update。これは@BLCの提案からの更新された回答です。

また、彼の文字列の二重%%を修正します。

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    let textSize = 300
    let javascript = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(textSize)%'"
    webView.evaluateJavaScript(javascript) { (response, error) in
        print()
    }
}
0
Doolali

メソッドで、取得したHTML文字列内のフォントサイズを必要なフォントサイズ(この例では40)に変更して、取得したHTMLデータのフォントサイズを変更します。

strHtml = [self htmlEntityDecode:strHtml];//parsing the html string


-(NSString *)htmlEntityDecode:(NSString *)string
{    
string = [string stringByReplacingOccurrencesOfString:@"14px;"   withString:@"40"];
string = [string stringByReplacingOccurrencesOfString:@"15px;"   withString:@"40"];
string = [string stringByReplacingOccurrencesOfString:@"16px;"   withString:@"40"];
string = [string stringByReplacingOccurrencesOfString:@"17px;"   withString:@"40"];
string = [string stringByReplacingOccurrencesOfString:@"18px;"   withString:@"40"];
string = [string stringByReplacingOccurrencesOfString:@"19px;"   withString:@"40"];
string = [string stringByReplacingOccurrencesOfString:@"20px;"   withString:@"40"];

 return string;
}

したがって、html文字列:span style = 'font-size:20px;なる:span style = 'font-size:40

注:gt;、apos;などの他の出現箇所を変更します。必要な文字列を取得してWebviewにロードすることもできます。

0
Nupur Sharma