Como posso obter o tamanho e o nome da fonte de um UILabel?

105

Eu tenho um UILabel que defino um tamanho de fonte e um nome de fonte com Interface Builder. Agora tenho que ler os valores de ambos no meu ViewController.

Como posso fazer isso?

Tim
fonte
Este método foi descontinuado iOS7, dê uma olhada neste artigo stackoverflow.com/questions/19128797/…
Maria,

Respostas:

254

Adicione uma propriedade ao arquivo .h do controlador de visualização:

@property (nonatomic, retain) IBOutlet UILabel *label;

Vincule o rótulo a este IBOutlet nos pontos de venda "Proprietário do arquivo" no Interface Builder. Se não estiver usando ARC, certifique-se de liberá-lo em -dealloc

- (void)dealloc
{
    [self.label release];
    [super dealloc];
}

Então, para obter o nome e o tamanho da fonte, tudo o que você precisa é

NSString *fontName = self.label.font.fontName;
CGFloat fontSize = self.label.font.pointSize;
Ned
fonte
3
Não funciona. Posso escrever texto nele, mas o fontName e pointSize são nulos.
Tim
Você quer dizer que pode alterar programaticamente o texto da etiqueta, mas não pode acessar fontName e pointSize? Editei a resposta acima para incluir self.label, em vez de apenas rótulo, já que não mencionei a criação de uma variável de instância para rótulo.
Ned
Além disso, certifique-se de conectar o rótulo no Interface Builder com o IBOutlet que você fez no File's Owner (o controlador de visualização).
Ned
2
Ah, esqueci a conexão do IB com o Dono do Arquivo.
Tim
29

Rápido:

var currentFontSize = button.titleLabel?.font.pointSize
Esqarrouth
fonte
15

O valor de tamanho de pontos não é o tamanho da fonte usado na propriedade de tamanho UIFont. Digamos que se você definir o tamanho da fonte do construtor de interface para 14 e imprimir o pointSize, terá apenas 11.

ctd
fonte
Parece estar funcionando agora. Se eu definir o tamanho da fonte de um rótulo no construtor de interface / editor de storyboard para 17 ... myLabel.font.pointSizeretorna 17.
Derek Soike
1

você tem que anexá-lo a um IBOutlet UILabel, e então, label.font ...

Guy Ephraim
fonte