Pergunta

Existe uma maneira eu posso mudar a fonte do sistema para um aplicativo inteiro?

Eu quero definir a fonte para o aplicativo inteiro para que eu não tenho que ir para etiquetas individuais ou fontes individuais para mudá-lo. Eu gostaria de uma definição universal que vai mudar todas as fontes que existem dentro do aplicativo. Como posso fazer isso?

Foi útil?

Solução

Faça uma classe chamada Constants.h compartilhada ou algo assim. Nele fazer isso:

#define kStandardFont [UIFont systemFontOfSize:20] 

Claro que ajustar o tipo de letra a ser o que você precisa que ele seja. Então, sempre que você precisar usá-lo (em uma etiqueta ou qualquer outro) fazer isso:

#import "Constants.h"
…
…
… 
[label setFont:kStandardFont];

Outras dicas

Você pode usar Pixate o estilo do seu aplicativo. Ao usar pixate, você pode definir os atributos de estilo de seus elementos de interface do usuário via CSS. Desta forma, você pode globalmente configuração seus UILabels e UITextField etc. usar sua fonte personalizada. Esta é de longe a melhor maneira de globalmente estilo a sua fonte.

No meu aplicativo eu tive que usar "Open Sans" e configuração todos os meus UILabels, UITextFields e UITextViews de usar esse tipo de letra:

Em seu "default.css"

label {
    font-family: "Open Sans";
}

text-field {
    font-family: "Open Sans";
}

text-view {
    font-family: "Open Sans";
}

enter descrição da imagem aqui

Eu acho que a resposta certa é: Não faça isso! Descobrir por que você acha que você quer fazer isso, e em seguida, descobrir alguma outra maneira de alcançar os mesmos fins. E pessoal aqui seria feliz para ajudar a descobrir outra maneira de esses fins. (Por exemplo, é isso que está Coneybeare resposta sugere de forma eficaz.)

Tudo o que disse ... não há nenhuma maneira no SDK oficial para mudar a fonte do sistema. Você pode ser capaz de fazer alguns progressos por swizzling systemFontWithSize de UIFont: Método - ver http: // www .cocoadev.com / index.pl? MethodSwizzling para saber mais sobre swizzling método. Tenha em mente (a) isso só irá alterar a aparência de qualquer coisa que usa systemFontWithSize: para obter a sua fonte, (b) isto pode quebrar todos os tipos de coisas que dependem do ter o tamanho da fonte original, e (c) este poderia muito bem começá-lo rejeitado na App Store.

Todas estas advertências se somam à pergunta: O que você está realmente tentando realizar com este

?

parece funcionar pelo menos por UILabels:

@interface UIFont (mxcl)
@end
@implementation UIFont (mxcl)
+ (id)systemFontOfSize:(CGFloat)sz {
    return [UIFont fontWithName:@"AmericanTypewriter" size:sz]
}
+ (id)boldSystemFontOfSize:(CGFloat)sz {
    return [UIFont fontWithName:@"AmericanTypewriter-Bold" size:x]
}
@end

Não - é por isso que ele é chamado o sistema fonte, e não o aplicativo fonte

.

Fontes são específicos para cada controle na interface do usuário. Por exemplo, cada UILabel tem sua própria configuração de fonte.

Se você quiser mudar a fonte de todos os controles, você vai ter que mudá-los todos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top