2012-05-07 27 views
48

Chciałbym wyświetlić niestandardową czcionkę wewnątrz UIWebView. Już umieściłem czcionkę w pliku plist w "Czcionki dostarczone przez aplikację". Kod w użyciu:Używanie niestandardowej czcionki w UIWebView

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

gdzie html jest NSString że ma następującą zawartość:

<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 powinny być wspierane TTF. Doceniłbym trochę html/code, który faktycznie działa.

+1

'GOTHAMboldSymbol_0.tff' - rozszerzenie powinno być' ttf' (chyba, że ​​czcionka rzeczywiście ma rozszerzenie 'tff' na dysku). –

+0

Próbuję znaleźć rozwiązanie tego również, ale: Myślę, że chcesz przekazać "zero" dla baseURL. – MusiGenesis

+0

@Joris W tej chwili zmagam się z tym samym problemem i byłoby ciekawie usłyszeć, czy znalazłeś rozwiązanie. – Lindemann

Odpowiedz

93

Po jakimś spróbować i błędów znalazłem niezawodny sposób, aby załadować niestandardowych czcionek z lokalnym CSS.

1. Dodaj czcionki do aplikacji ... upewnij się, że plik jest skierowany odpowiednio do Wniosku

enter image description here enter image description here

2. Następnie dodać czcionkę do yourApp-Info.plist

enter image description here

3. Uruchom NSLog(@"Available fonts: %@", [UIFont familyNames]); Aby sprawdzić, która nazwa czcionki/ma fontFamily dla st m ...

enter image description here

4. Kopiowanie, że nazwa i wykorzystywać je w CSS ... @ font-face nie jest potrzebna

body { 
    font-family:"Liberation Serif"; 
} 
+0

Przepraszam, że uwzględniłem ten krok. W jakiś sposób założyłem, że zrobiłeś już ten krok ... –

+0

Dziękuję! Czy to jest udokumentowane w dowolnym miejscu? – ozz

+4

Krok 1-3 to w zasadzie standardowy sposób dodawania niestandardowych czcionek do aplikacji ... więc tak, jest to udokumentowane. A w ostatnim kroku używasz standardowego sposobu wywoływania czcionki dostępnej w systemie ... :-) – Lindemann

10

Skończyło się na tym, że zadziałało, chociaż nie jestem pewien, co zrobiłem źle powyżej. Oto HTML, którego używam (NSString * htmll). Dodałem wszystko, niektóre z nich mogą nie być odpowiednie 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 załadować UIWebView następująco:

UIWebView *webView = [[UIWebView alloc] initWithFrame:rect]; 
[webView makeTransparent]; 
NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]; 
[webView loadHTMLString:html baseURL:baseURL]; 
+0

Dzięki Joris! <3 – Lindemann

Powiązane problemy