Fonte de aparência UILabel e fonte de string atribuída
No meu aplicativo, eu tenho uma fonte personalizada global aplicada a todos os rótulos, assim:
UIFont *font = [UIFont fontWithName:kMyFontName size:15.0];
[[UILabel appearance] setFont:font];
Isso funciona bem. No entanto, em alguns casos, quero poder especificar uma fonte diferente para uma região específica de uma string UILabel.
Então, eu tenho algo parecido com isto:
NSString *string = @"Foo Bar Baz";
UIFont *boldFont = [UIFont fontWithName:kMyBoldFontName size:15.0];
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:string];
[attrString setAttributes:@{ NSFontAttributeName: boldFont } range:NSMakeRange(0, 3)];
self.myLabel.attributedText = attrString;
No entanto, isso não parece funcionar. Eu espero que o "Foo" fique em negrito, mas toda a string tem apenas a fonte padrão. É como se a fonte em negrito não fosse aplicada e estivesse sendo substituída pela fonte definida no proxy de aparência do UILabel.
Quando removo a linha de aparência UILabel, ela funciona bem (posso ver parte da string em negrito). Basicamente, quero ter minha fonte personalizada aplicada ao rótulo, mas uma fonte separada aplicada a uma região diferente da string. Normalmente, isso funciona bem com seqüências de caracteres atribuídas, mas, por algum motivo, a configuração da fonte de aparência UILabel desativa essa funcionalidade (ou assim parece).
Resultados esperados: "Foo Bar Baz "Resultados reais: "Foo Bar Baz"Se eu remover o[[UILabel appearance] setFont:]
linha então funciona:
(mas a fonte personalizada não está definida no restante da cadeia).
Portanto, minha pergunta é: Existe uma maneira de especificar uma única fonte para usar como padrão em todo o aplicativo, mas ainda assim poder substituí-la parcialmente usando seqüências de caracteres atribuídas?
Além disso, se alguém puder me explicar por que isso não está funcionando, eu agradeceria.