comment augmenter ou diminuer la taille de la police UIWebview sans utiliser scalePageToFit: NO;
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];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *fontSize=@"143";
NSString *jsString = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",[fontSize intValue]];
[myWebview stringByEvaluatingJavaScriptFromString:jsString];
}
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;
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)%%'")
}
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];
Essayez le code ci-dessous:
NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",currentTextSize];
[_webview stringByEvaluatingJavaScriptFromString:setTextSizeRule];
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];
}
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)
}
}
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.