Разработка iPhone - Настройка шрифта UIWebView
Вопрос
Мне нужно показывать форматированный текст, который я извлекаю с сервера, поэтому я использую UIWebView.Теперь проблема в том, что у меня нет контроля над шрифтом, который используется в UIWebView.Как я могу изменить шрифт, чтобы использовать системный шрифт (чтобы он соответствовал остальной части приложения)?
В данный момент я делаю что-то подобное:
myRichTextView = [[UIWebView alloc] initWithFrame:CGRectMake(x, y, width, height)];
myRichTextView.backgroundColor = [UIColor clearColor];
[myRichTextView setScalesPageToFit:NO];
[myRichTextView loadHTMLString:myString baseURL:[NSURL URLWithString:myBaseURL]];
Опять же, нужно управлять отображаемым шрифтом.Если я не могу управлять шрифтом, пожалуйста, дайте мне знать о других альтернативах UIWebView.
Спасибо
Решение
Ссылка на таблицу стилей CSS в вашем HTML-документе или размещение информации о стиле в верхней части самого HTML-документа
Другие советы
Это сработало, когда я изменил строку следующим образом. Ваш правильный Крис, это не должно иметь никакого значения.
NSString *myDescriptionHTML = [NSString stringWithFormat:@"<html> \n"
"<head> \n"
"<style type=\"text/css\"> \n"
"body {font-family: \"%@\"; font-size: %@;}\n"
"</style> \n"
"</head> \n"
"<body>%@</body> \n"
"</html>", @"helvetica", [NSNumber numberWithInt:kFieldFontSize], content];
Я использую следующий CSS в веб-представлении, чтобы делать именно то, что вы говорите.
body
{
font-family:helvetica;
}
Но ваш, похоже, тоже должен сработать.Странно.Единственное различие, которое я вижу, - это шрифт против семейства шрифтов, но это не должен внесите изменения.
крис.
Системный шрифт
-apple-system на iOS 9 & amp; Safari OS X 10
font-family: -apple-system;
font-family: '-apple-system','HelveticaNeue'; // iOS 8 compatible
Я создал метод , который переносит некоторый текст в тело HTML с правильным стилем для данное UIColor
и UIFont
. Он основан на ответе Мустафы .
Используется так:
NSString * htmlString = [MyClass htmlFromBodyString:@"an <b>example</b>"
textFont:[UIFont systemFontOfSize:10]
textColor:[UIColor grayColor]];
[webView loadHTMLString:htmlString baseURL:nil];
еще один простой способ, который сработал для меня
UIFont *font = [UIFont systemFontOfSize:15];
NSString *htmlString = [NSString stringWithFormat:@"<span style=\"font-family:Helvetica; font-size: %i\">%@</span>",
(int) font.pointSize,
[bodyText stringWithNewLinesAsBRs]];
[myWebView loadHTMLString:htmlString baseURL:nil];
просто измени
font:helvetica
Для
font-family:helvetica
Я использую
body {
font-family: 'Noteworthy-Bold';
}
Это нормально работает для моей страницы (WebView), так как остальная часть моего приложения также использует Apple " Noteworthy-Bold ".
Если вы хотите использовать свой собственный шрифт, используйте @ font-face и обратитесь к файлу TTF или EOT.
Вот мое простое в использовании и легко расширяемое решение с дополнительными настройками шрифтов:
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];