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.