iPhone Entwicklung - Einstellung UIWebView Schrift
Frage
Ich habe Rich-Text zu zeigen, dass ich vom Server ziehen, also verwende ich UIWebView. Das Problem ist jetzt, dass ich keine Kontrolle über die Schriftart haben, die in UIWebView verwendet wird. Wie kann ich die Schriftart ändern Systemschriftart zu verwenden (so dass es mit dem Rest der Anwendung konsistent)?
Ich mache so etwas wie dies im Moment:
myRichTextView = [[UIWebView alloc] initWithFrame:CGRectMake(x, y, width, height)];
myRichTextView.backgroundColor = [UIColor clearColor];
[myRichTextView setScalesPageToFit:NO];
[myRichTextView loadHTMLString:myString baseURL:[NSURL URLWithString:myBaseURL]];
Auch hier müssen die Display-Schrift zu steuern. Wenn ich die Schrift nicht kontrollieren können, lassen Sie es mich andere Alternativen zu UIWebView kennen.
Danke
Lösung
Referenz CSS-Stylesheets in Ihrem HTML-Dokument oder legen Sie die Stilinformationen in die Oberseite des HTML-Dokuments selbst
Andere Tipps
Es funktionierte, wenn ich die Zeichenfolge wie folgt geändert. Ihr Recht, chris, sollte es keinen Unterschied machen.
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];
Ich verwende die folgende CSS in einer Web-Ansicht zu tun genau das, was Sie sagen.
body
{
font-family:helvetica;
}
Aber Ihr sieht das wie sollte es auch funktionieren. Seltsam. Die einzige Unterschied I ist die Schriftart vs font-family sehen kann, aber das nicht einen Unterschied machen.
chris.
Systemschriftart
-Apple-System auf iOS 9 & Safari OS X 10
font-family: -apple-system;
font-family: '-apple-system','HelveticaNeue'; // iOS 8 compatible
Ich habe eine Methode , den Text in einem HTML-Körper mit dem richtigen Stil wickelt für eine gegebene UIColor
und UIFont
. Es basiert auf Mustafa Antwort .
Es wird wie folgt verwendet:
NSString * htmlString = [MyClass htmlFromBodyString:@"an <b>example</b>"
textFont:[UIFont systemFontOfSize:10]
textColor:[UIColor grayColor]];
[webView loadHTMLString:htmlString baseURL:nil];
weitere einfache Möglichkeit, die für mich gearbeitet
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];
nur ändern
font:helvetica
font-family:helvetica
ich
body {
font-family: 'Noteworthy-Bold';
}
Dies funktioniert gut für meine über-Seite (WebView), wie der Rest meiner App nutzt auch Apples "Noteworthy-Bold".
Wenn Sie Ihre eigene Schriftart verwenden, die Verwendung von @ font-face machen und zu einer TTF oder EOT-Datei verweisen.
Hier ist mein einfach zu bedienen und einfache Lösung mit mehr Schrifteinstellungen zu erweitern:
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];