как увеличить размер шрифта в UIWebView - PullRequest
35 голосов
/ 26 февраля 2009

как увеличить или уменьшить размер шрифта UIWebview, не используя scalePageToFit: NO;

Ответы [ 10 ]

73 голосов
/ 24 ноября 2009

У меня 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];
}
11 голосов
/ 10 июля 2013
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *fontSize=@"143";
    NSString *jsString = [[NSString alloc]      initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'",[fontSize intValue]];
    [myWebview stringByEvaluatingJavaScriptFromString:jsString];

}
9 голосов
/ 26 февраля 2009

В настоящее время нет открытого способа прямого манипулирования DOM в UIWebView или каких-либо удобных методов для обработки таких вещей, как размеры шрифта. Предлагаю подать Радары .

Сказав это. Вы можете изменить размер шрифта, изменив CSS, как и любую другую веб-страницу. Если это невозможно (вы не управляете контентом), вы можете написать небольшую функцию javascript для изменения свойств CSS в DOM страниц и выполнить ее, вызвав:

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
5 голосов
/ 27 августа 2015

Swift 3

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

Старее Свифт :

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

    webView.stringByEvaluatingJavaScriptFromString("document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '\(textSize)%%'")
}
1 голос
/ 13 апреля 2017

в моем случае я использую UISlider для fontSize, может быть любым значением с плавающей запятой

func webViewDidFinishLoad(_ webView: UIWebView) {

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

}
1 голос
/ 22 мая 2014

Попробуйте этот простой метод

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    int fontValue = 150;
    NSString *webviewFontSize = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",fontValue];
    [your_webview stringByEvaluatingJavaScriptFromString:webviewFontSize];
}
1 голос
/ 26 августа 2013

Вот мое изменение размера и цвета шрифта в 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 голос
/ 19 июня 2013

Попробуйте следующий код:

NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",currentTextSize];
[_webview stringByEvaluatingJavaScriptFromString:setTextSizeRule];
0 голосов
/ 05 марта 2019

В SWIFT 4 -

let fontSize = 20
let fontSetting = "<span style=\"font-size: \(fontSize)\"</span>"
webView.loadHTMLString( fontSetting + myHTMLString, baseURL: nil)
0 голосов
/ 27 января 2017

Измените размер шрифта извлеченных данных HTML, изменив вхождение размера шрифта в извлеченной HTML-строке на требуемый размер шрифта (в нашем примере 40) в методе.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...