Pergunta

Estou tentando mostrar um longo pedaço de texto dentro de um UILabel em uma linha.O UILabel é uma subvisão do UIScrollView para que eu possa rolar e ver todo o UILabel.

Meu problema é que o método sizeToFit funciona apenas parcialmente.

textLabel.attributedText = attributedString;
textLabel.numberOfLines = 1;
[textLabel sizeToFit];
textScrollView.contentSize = CGSizeMake(textLabel.frame.size.width, textLabel.frame.size.height);

O tamanho do conteúdo do UIScrollView fica grande o suficiente para mostrar todo o UILable, mas para uma linha como:

então tentarei compartilhar alguns deles aqui de vez em quando."

O UILabel mostra:

então vou tentar compartilhar algumas...

O que estou fazendo de errado?

Foi útil?

Solução

Acontece que o código está bom - mas Usar Autolayout foi marcado.Desmarque - tudo funciona perfeitamente ...

Outras dicas

Se você deseja conseguir isso com o layout automático ativado, é simples.Apenas certifique-se de adicionar numberOfLines

textLabel.adjustsFontSizeToFitWidth = YES;
textLabel.numberOfLines = 0;

Surpreendentemente, se você não restringisse a largura da etiqueta, isso funcionaria:

[textLabel.superview layoutSubviews];

Aprendi isso por tentativa e erro.

tentar

textLabel.adjustsFontSizeToFitWidth  = YES;
textLabel.minimumFontScale      =  0.5;  

Como você restringiu seu Label para mostrar apenas uma linha de Text e truncar o restante, ele está se comportando da mesma forma

textLabel.attributedText = attributedString;
textLabel.numberOfLines = 0;
[textLabel sizeToFit];
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textScrollView.contentSize = CGSizeMake(textLabel.frame.size.width, textLabel.frame.size.height);

Espero que isso ajude você

O motivo mais comum para sizeToFit não funcionar corretamente é o UILabel não ter nenhuma restrição de layout automático, por exemplo, se você confiar implicitamente na posição da visualização permanecendo fixa em relação ao canto superior esquerdo.Adicionar qualquer restrição (inicial, superior, centralY, qualquer coisa) corrigirá o problema, presumivelmente porque resultará em layoutSubviews sendo chamado em algum momento, conforme sugerido na resposta de Maxthon Chan.

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