Eu tenho o seguinte código:
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0.0, 0.0, 25, 25);
[[button layer] setCornerRadius:5.0f];
[[button layer] setMasksToBounds:YES];
[[button layer] setBackgroundColor:[[UIColor redColor] CGColor]];
[button.titleLabel setFrame:CGRectMake(0,0, 25, 25)];
[button setTitle:[NSString stringWithFormat:@"%@", [[topics objectAtIndex:indexPath.row] unread]] forState:UIControlStateNormal];
O problema é que, quando a sequência no texto não é longa, ela mostra boa (1-2 dígitos). No entanto, quando é bastante longo (3 dígitos), tudo o que vejo é um botão vermelho, sem texto dentro. Como ajusto isso?
Eu não acho isso:
[button.titleLabel setAdjustsFontSizeToFitWidth:YES];
faz o trabalho, certo?
ios
objective-c
adit
fonte
fonte
titleButton.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
Respostas:
Tente o seguinte:
Não sei por que isso faz o truque, mas faz :)
fonte
numberOfLines
para 0deve fazer o trabalho sozinho se você estiver usando o Layout automático e tiver definido uma restrição na largura do botão.
As outras opções (fator de escala mínimo, número de linhas etc.) ainda podem ser usadas para personalizar ainda mais de acordo com suas necessidades, mas não são necessárias.
fonte
A resposta do EliBud não funciona no iOS 8. Encontrei uma solução que funciona no iOS 8. Abaixo está um código rápido:
Você pode brincar com o rótulo? .LineBreakMode, pois achei que os resultados variam para os diferentes modos de interrupção.
fonte
no mais recente rápido isso parece funcionar para mim
fonte
Solução iOS 10.3 com base nas outras respostas aqui:
Ninguém mencionou
baselineAdjustment
ainda; Eu precisava disso porque o rótulo do botão fica desalinhado verticalmente depois queadjustsFontSizeToFitWidth
entra em vigor.baselineAdjustment
Documentação da Apple :FWIW, eu nunca consegui alinhar o rótulo perfeitamente.
fonte
adjustsFontSizeToFitWidth
não estava funcionando para mim até eu definir uma restrição de largura no meu botão no Interface Builder.A definição da restrição impediu que o botão aumentasse de tamanho e, portanto, não percebeu que era necessário reduzir o texto.
fonte
Extensão Swift 4
fonte
Solução Xamarin.iOS
Acabei definindo o tamanho da fonte para garantir que ela fosse "grande" antes que o sistema ajuste o tamanho para caber.
fonte
com base na resposta de Nik Kov:
fonte
A solução abaixo funcionou para mim:
A documentação do desenvolvedor explica essa propriedade como:
fonte
No iOS 13.1 com Swift 5, eu precisava fornecer
contentEdgeInsets
também para ajustar os preenchimentos.fonte