Разработка iPhone - Настройка шрифта UIWebView - PullRequest
45 голосов
/ 16 января 2009

Мне нужно показать форматированный текст, который я извлекаю с сервера, поэтому я использую 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.

Спасибо

Ответы [ 9 ]

103 голосов
/ 17 января 2009

Это сработало, когда я изменил строку следующим образом. Ваш правильный Крис, это не должно иметь никакого значения.

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];
22 голосов
/ 16 января 2009

Ссылка на таблицу стилей CSS в вашем HTML-документе или размещение информации о стиле в верхней части самого HTML-документа

15 голосов
/ 16 января 2009

Я использую следующий CSS в веб-представлении, чтобы сделать именно то, что вы говорите.

body
{
    font-family:helvetica;
}

Но, похоже, он тоже должен работать. Странный. Единственное отличие, которое я вижу, - это font против семейства шрифтов, но не должно иметь значение.

Крис.

11 голосов
/ 08 декабря 2015

Системный шрифт

-apple-system на iOS 9 и Safari OS X 10

font-family: -apple-system;
font-family: '-apple-system','HelveticaNeue'; // iOS 8 compatible
10 голосов
/ 30 января 2014

Я создал метод , который переносит некоторый текст в тело HTML с правильным стилем для заданных UIColor и UIFont. Он основан на ответе Мустафы .

Используется так:

NSString * htmlString = [MyClass htmlFromBodyString:@"an <b>example</b>"
                                           textFont:[UIFont systemFontOfSize:10]
                                          textColor:[UIColor grayColor]];
[webView loadHTMLString:htmlString baseURL:nil];
6 голосов
/ 04 июля 2014

другой простой способ, который работал для меня

    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];
4 голосов
/ 09 февраля 2010

просто изменить

font:helvetica

до

font-family:helvetica

2 голосов
/ 18 мая 2014

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

                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];
2 голосов
/ 05 февраля 2012

Я использую

body {
        font-family: 'Noteworthy-Bold';
    }

Это прекрасно работает для моей страницы (WebView), так как остальная часть моего приложения также использует Apple "Noteworthy-Bold".

Если вы хотите использовать свой собственный шрифт, используйте @ font-face и обратитесь к файлу TTF или EOT.

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