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?


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;

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

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.


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 ...

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.