web-dev-qa-db-fra.com

Utilisation d'une police personnalisée dans une UIWebView

Je voudrais afficher une police personnalisée dans une UIWebView. J'ai déjà mis la police dans le plist sous "Polices fournies par l'application". Le code utilisé:

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

où html est une chaîne NSS qui a le contenu suivant:

<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>

J'utilise iOS 4.2, donc TTF devrait être pris en charge. J'apprécierais un peu de code html/qui fonctionne réellement.

53
Joris Weimar

Après quelques essais et erreurs, j'ai trouvé un moyen fiable de charger des polices personnalisées avec un CSS local.

1. Ajoutez votre police à l'application ... assurez-vous que le fichier est correctement ciblé sur l'application

enter image description hereenter image description here

2. Ajoutez ensuite votre police à votre application-Info.plist

enter image description here

3. Exécutez NSLog(@"Available fonts: %@", [UIFont familyNames]); Pour vérifier le nom de la police/famille de polices pour le système ...

enter image description here

4. Copiez ce nom et utilisez-les dans votre CSS ... @ font-face n'est pas nécessaire

body {
    font-family:"Liberation Serif";
}
100
Lindemann

J'ai fini par le faire fonctionner même si je ne suis pas sûr de ce que j'ai fait de mal ci-dessus. Voici le HTML que j'utilise (NSString * htmll). J'ai tout ajouté, certains pourraient ne pas être pertinents pour la solution.

<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>

et je charge l'UIWebView comme suit:

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