Używanie niestandardowej czcionki w widoku UIWebView

Chciałbym wyświetlić niestandardową czcionkę wewnątrz UIWebView. Umieściłem już czcionkę w pliście w zakładce "czcionki dostarczone przez aplikację". Kod w użyciu:

        UIWebView *webView = [[UIWebView alloc] initWithFrame:myRect];
        NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
        [webView loadHTMLString:html baseURL:baseURL];
        [self addSubview:webView];

Gdzie html jest Nsstringiem o następującej treści:

<html><head>
<style type="text/css">
@font-face {
    font-family: gotham_symbol;
    src: local('GOTHAMboldSymbol_0.tff'), format('truetype') 
} 
body { 
 font-family: gotham_symbol;
font-size: 50pt;
}
</style>
</head><body leftmargin="0" topmargin="0">
This is <i>italic</i> and this is <b>bold</b> and this is some unicode: &#1101;
</body></html>

Używam iOS 4.2, więc TTF powinien być obsługiwany. Byłbym wdzięczny za trochę kodu html/, który faktycznie działa.

Author: Tshepang, 2012-05-08

2 answers

Po kilku próbach i błędach znalazłem niezawodny sposób ładowania niestandardowych czcionek za pomocą lokalnego CSS.

1. Dodaj swoją czcionkę do aplikacji...upewnij się, że plik jest docelowy odpowiednio do aplikacji

Tutaj wpisz opis obrazkaTutaj wpisz opis obrazka

2. Następnie dodaj swoją czcionkę do yorapp-Info.plist

Tutaj wpisz opis obrazka

3. Uruchom NSLog(@"Available fonts: %@", [UIFont familyNames]);, aby sprawdzić, jaką nazwę ma czcionka / fontfamily dla systemu...

Tutaj wpisz opis obrazka

4. Skopiuj tę nazwę i użyj ich w CSS...@ font-face is not potrzebne

body {
    font-family:"Liberation Serif";
}
 97
Author: Lindemann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-11 11:04:20

Skończyło się na tym, że to działa, chociaż nie jestem pewien, co zrobiłem źle powyżej. Oto HTML, którego używam (NSString * htmll). Dodałem wszystko, część może nie mieć znaczenia dla rozwiązania.

<html><head><style type="text/css">
@font-face {
font-family: 'gotham_symbol';
src: url('GOTHAMboldSymbols_0.ttf')  format('truetype') 
}
@font-face {
font-family: 'gotham_symbol_italic';
src: url('GothamBoldItalic.ttf')  format('truetype') 
}
#w {display:table;}
#c {display:table-cell; vertical-align:middle;}
i { font-family: 'Helvetica-BoldOblique'; }
</style></head><body topmargin="0" leftmargin="0">
<div style="display: table; width: 320px; height: 50px; #position: relative; overflow: hidden;">
<div style=" #position: absolute; #top: 50%;display: table-cell; vertical-align: middle;">
<div style=" #position: relative; #top: -50%">
<p style="font-size:20px;font-family:'gotham_symbol';color:#97371f;">THE TEXT GOES HERE</p></div></div></div></body></html>

I ładuję UIWebView w następujący sposób:

UIWebView *webView = [[UIWebView alloc] initWithFrame:rect];
[webView makeTransparent];
NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[webView loadHTMLString:html baseURL:baseURL];
 12
Author: Joris Weimar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-02 05:47:18