09 Set, 2011 23:25

Como colocar fontes customizadas no seu aplicativo iPhone/iPad

Importando a fonte

Para adicionar fontes é muito simples: basta importar a fonte para o seu projeto, dando Add > Existing Files no arquivo de fonte na pasta resources do seu projeto Xcode e depois colocar a fonte no seu plist, criando uma chave UIAppFonts:

<key>UIAppFonts</key>
<array>
    <string>TarzaNarIta.ttf</string>
    <string>TarzaNarBol.ttf</string>
</array>

Depois para usá-la em seu código basta chamar o método fontWithName de UIFont, passando o nome da fonte importada:

self.tituloLabel.font = [UIFont fontWithName:@"TarzanaNarrowBold" size:21.0];

Para saber se as fontes foram importadas corretamente, nós sugerimos o código abaixo que imprime todas as fontes que o seu aplicativo suporta, inclusive as customizadas. Ele também é bom para saber o nome real da fonte que você importou, pois ele pode ser diferente do arquivo:

// List all fonts on iPhone
NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
NSArray *fontNames;
NSInteger indFamily, indFont;
for (indFamily=0; indFamily<[familyNames count]; ++indFamily)
{
    NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
    fontNames = [[NSArray alloc] initWithArray:
    [UIFont fontNamesForFamilyName:
    [familyNames objectAtIndex:indFamily]]];
    for (indFont=0; indFont<[fontNames count]; ++indFont)
    {
        NSLog(@"    Font name: %@", [fontNames objectAtIndex:indFont]);
    }
    [fontNames release];
}
[familyNames release];

Problema: Interface Builder

O cenário ideal seria poder usar essas fontes customizadas direto no Interface Builder, mas nas nossas tentativas com o Xcode 3 isso não foi possível. Quando a fonte customizada é selecionada no Xib, ela ainda aparece como Helvetica no aplicativo, por isso, ainda é preciso mapear cada label ou botão com fonte customizada e executar o código acima para alterar a fonte. Se alguém já testou usar fontes customizadas no Xcode 4 ou conseguiu fazer isso no Xcode 3 não deixe de comentar abaixo.

Ao navegar neste site, você consente o uso de cookies nossos e de terceiros, que coletam informações anônimas e são essenciais para melhorar sua experiência em nosso site.