Tamanho da fonte do UILabel?

87

Não consigo modificar o tamanho da fonte de um UILabel com o seguinte código:

itemTitle.font = [UIFont systemFontOfSize:25];

Conforme eu aumento o número 25 para algo maior, parece que apenas adiciona uma margem superior ao rótulo, o que, consequentemente, empurra o texto tanto para baixo, que o texto fica cortado na parte inferior ou transborda completamente.

eu tenho outro UILabel em outro lugar com systemFontOfSize 25, e é muito menor que o texto itemTitle. O que está acontecendo? 25 não deveria ser um valor absoluto?

Estou tão confuso sobre como alterar programaticamente o tamanho da fonte dos uilabels.

John
fonte

Respostas:

56

Verifique se seus rótulos não estão configurados para redimensionar automaticamente. No IB, é chamado de "Autoshrink" e fica ao lado da configuração da fonte. É chamado de forma programática adjustsFontSizeToFitWidth.

Rob Napier
fonte
176

Eu modifiquei o UILabel seguindo o código:

label.font=[label.font fontWithSize:25];

Experimente e veja se está funcionando no seu caso ou não ???

extremo
fonte
4
label.font = label.font.fontWithSize(25)para Swift
Tom Howard
Swift 3label.font = label.font.withSize(25)
Marcio Klepacz
34
[label setFont:[UIFont systemFontOfSize:9]];

isso funciona para mim.

João paulo manoza
fonte
17

Para Swift 3.1 e Swift 4 , se você quiser apenas alterar o tamanho da fonte de um rótulo:

let myLabel : UILabel = ...
myLabel.font = myLabel.font.withSize(25)
Kevin ABRIOUX
fonte
12

** Você pode definir o tamanho da fonte por essas propriedades **

timedisplayLabel= [[UILabel alloc]initWithFrame:CGRectMake(70, 194, 180, 60)];

[timedisplayLabel setTextAlignment:NSTextAlignmentLeft];

[timedisplayLabel setBackgroundColor:[UIColor clearColor]];

[timedisplayLabel setAdjustsFontSizeToFitWidth:YES];

[timedisplayLabel setTextColor:[UIColor blackColor]];

[timedisplayLabel setUserInteractionEnabled:NO];

[timedisplayLabel setFont:[UIFont fontWithName:@"digital-7" size:60]];

timedisplayLabel.layer.shadowColor =[[UIColor whiteColor ]CGColor ];

timedisplayLabel.layer.shadowOffset=(CGSizeMake(0, 0));

timedisplayLabel.layer.shadowOpacity=1;

timedisplayLabel.layer.shadowRadius=3.0;

timedisplayLabel.layer.masksToBounds=NO;

timedisplayLabel.shadowColor=[UIColor darkGrayColor];

timedisplayLabel.shadowOffset=CGSizeMake(0, 2);
Kapil
fonte
5

método muito simples, mas eficaz para ajustar o tamanho do texto do rótulo de forma programática: -

label.font=[UIFont fontWithName:@"Chalkduster" size:36];

:-)

Madhur Sodhi
fonte
5

Isso funcionou para mim em

Swift 3

label.font = label.font.fontWithSize(40.0)

Swift 4

label.font = label.font.withSize(40.0)
Krunal
fonte
1

Isso funcionou para mim:

sequencerPlayLabel.font = [UIFont fontWithName:kTypeFont size:kTypeFontSize];

-rico

user2887097
fonte
1

As respostas acima ajudaram muito.

Aqui está a versão Swift.

@IBOutlet weak var priceLabel: UILabel!

*.... lines of code later*

self.priceLabel.font = self.priceLabel.font.fontWithSize(22)
Christopher Wade Cantley
fonte
1

Em C # Estas maneiras de resolver o problema. No UIkit, esses métodos estão disponíveis.

Label.Font = Label.Font.WithSize(5.0f);
       Or
Label.Font = UIFont.FromName("Copperplate", 10.0f);  
       Or
Label.Font = UIFont.WithSize(5.0f);
Shanu Singh
fonte
-1

Tente alterar a altura e a largura do tamanho da moldura da etiqueta para que o texto não seja cortado.

 [label setframe:CGRect(x,y,widht,height)];
vishiphone
fonte