Подтвердить что ты не робот

Как изменить шрифт по умолчанию UIWebView

Какой шрифт использует UIWebView по умолчанию? Я хотел бы иметь возможность изменить это. Но я не хочу делать это в строке html, вместо этого хочу иметь что-то вроде:

[webView setFont:[UIFont fontWithName:@"GothamRounded-Bold" size:14]

существует ли такое свойство или каким-либо другим способом?

4b9b3361

Ответ 1

Просто добавьте тег <font face> к своей строке перед загрузкой в ​​webView.

NSString *body = [plist objectForKey:@"foo"];
NSString *htmlString = 
    [NSString stringWithFormat:@"<font face='GothamRounded-Bold' size='3'>%@", body];
[webView loadHTMLString:htmlString baseURL:nil];

Ответ 2

Вы можете использовать ваш объект UIFont (чтобы его можно было легко установить и изменить), но вместо этого оберните HTML в span; font теги устарели с HTML 4.01.

UIFont *font = [UIFont fontWithName:@"GothamRounded-Bold" size:14];

Предполагая, что вы уже создали NSString *htmlString, вы можете использовать свойства шрифта:

htmlString = [NSString stringWithFormat:@"<span style=\"font-family: %@; font-size: %i\">%@</span>",
                                        font.fontName,
                                        (int) font.pointSize,
                                        htmlString];

В качестве альтернативы вы можете просто указать значения вместо использования объекта UIFont:

htmlString = [NSString stringWithFormat:@"<span style=\"font-family: %@; font-size: %i\">%@</span>",
                                        @"GothamRounded-Bold",
                                        14,
                                        htmlString];

Ответ 3

Вы можете попробовать установить шрифт, введя строку JavaScript следующим образом:

[webView stringByEvaluatingJavaScriptFromString: @"document.body.style.fontFamily = 'GothamRounded-Bold'"];

Ответ 4

Существует быстрое решение 3:

func webViewDidFinishLoad(_ webView: UIWebView) {
    webView.stringByEvaluatingJavaScript(from: "document.getElementsByTagName('body')[0].style.fontFamily =\"-apple-system\"")
}

Я только что поместил шрифт iOS по умолчанию для этого примера

Ответ 5

Вот мое простое в использовании и легко расширяемое решение с большим количеством настроек шрифта:

myHTMLLabel = [[UIWebView alloc] initWithFrame:CGRectMake(myX, myY, myWidth, myHeight)];

myHTMLLabel.userInteractionEnabled=NO;
myHTMLLabel.scalesPageToFit=NO;

[myHTMLLabel setOpaque:NO];
myHTMLLabel.backgroundColor = myBackColor;

NSString *myHTMLText = [NSString stringWithFormat:@"<html>"
                        "<head><style type='text/css'>"
                        ".main_text {"
                        "   display: block;"
                        "   font-family:[fontName];"
                        "   text-decoration:none;"
                        "   font-size:[fontSize]px;"
                        "   color:[fontColor];"
                        "   line-height: [fontSize]px;"
                        "   font-weight:normal;"
                        "   text-align:[textAlign];"
                        "}"
                        "</style></head>"
                        "<body> <SPAN class='main_text'>[text]</SPAN></body></html>"];

myHTMLText = [myHTMLText stringByReplacingOccurrencesOfString: @"[text]" withString: myText];
myHTMLText = [myHTMLText stringByReplacingOccurrencesOfString: @"[fontName]" withString: myFontName];
myHTMLText = [myHTMLText stringByReplacingOccurrencesOfString: @"[fontSize]" withString: myFontSize];
myHTMLText = [myHTMLText stringByReplacingOccurrencesOfString: @"[fontColor]" withString: myFontColorHex];
myHTMLText = [myHTMLText stringByReplacingOccurrencesOfString: @"[textAlign]" withString: myFontAlign];


NSLog(@"*** renderHTMLText --> myHTMLText: %@",myHTMLText);

[myHTMLLabel loadHTMLString:myHTMLText baseURL:nil];

Ответ 6

UIWebview использует шрифт, установленный в HTML. Не существует шрифта по умолчанию. Даже если шрифт не упоминается конкретно, у вас нет доступа к его настройке. Все это внутри WebKit, к которому у нас нет доступа.

Ответ 7

Для Swift я использую это в webViewDidFinishLoad

webView.stringByEvaluatingJavaScriptFromString("document.getElementsByTagName('body')[0].style.fontFamily =\"HelveticaNeue\"");

Ответ 8

Если кто-то ищет решение в Swift 3, я использовал это (на основе jterry-ответа):

let font = UIFont.init(name: "Name-of-your-font", size: theSize)
self.newsWebView.loadHTMLString("<span style=\"font-family: \(font!.fontName); font-size: \(font!.pointSize); color: #21367B\">\(yourString)</span>", baseURL: nil)

Помните, что здесь я не уверен, что шрифт не ноль. Перед загрузкой строки HTML можно добавить проверку nil. Здесь я также изменяю цвет шрифта, добавляя параметр цвета в стиле span. Это полностью необязательно.