web-dev-qa-db-fra.com

comment augmenter la taille de la police dans UIWebView

comment augmenter ou diminuer la taille de la police UIWebview sans utiliser scalePageToFit: NO;

35
Bala

J'ai 2 boutons - A- et 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

Il n'y a actuellement aucun moyen exposé pour manipuler directement le DOM dans un UIWebView, ni aucune méthode pratique pour gérer des éléments tels que la taille des polices. Je suggère de déposer Radars .

Ayant dit cela. vous pouvez modifier la taille de la police en modifiant le code CSS, comme toute autre page Web. Si ce n'est pas possible (vous ne contrôlez pas le contenu), vous pouvez écrire une petite fonction javascript pour changer les propriétés CSS dans les pages DOM, et l'exécuter en appelant:

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

Swift 3

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

Voici le mien pour changer la taille et la couleur de la police dans 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

Essayez le code ci-dessous:

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

 

Essayez cette méthode simple

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

dans mon cas, j'utilise un UISlider pour fontSize, peut être n'importe quelle valeur

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

Modifiez la taille de la police des données HTML extraites en modifiant l'occurrence de la taille de la police dans la chaîne html récupérée sur la taille de police requise (40 dans cet exemple) dans une méthode.

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

Ainsi, la chaîne html: Span style = 'taille de la police: 20px; Devient: Span style =' taille de la police: 40

Remarque: Modifiez les autres occurrences telles que gt ;, apos; aussi pour obtenir la chaîne désirée à charger dans votre Webview.

0
Nupur Sharma