UILabel com numberOfLines e lineBreakMode

votos
6

Eu estou trabalhando em um projeto que tem para apoiar tanto iOS6 e iOS7. Meu problema é que funciona diferente em sistemas diferentes. Eu estou tentando criar UILabel com o número de linhas igual a 2, mas quando eu defini-lo é o modo de quebra de linha para NSLineBreakByTruncatingTail funciona diferente.

Explicação (numberOfLines = 2, text = @ longa teeexxxttt):

    iOS7                    iOS6
      NSLineBreakByWordWrapping
 ----------              ----------
|long      |            |long      |
|teeeexxxtt|            |teeeexxxtt|
 ----------              ----------

     NSLineBreakByTruncatingTail
 ----------              ----------
|long      |            |long te...|
|teeeexx...|            |          |
 ----------              ----------
     ^                       ^
     |                       |
  correct                incorrect - shows only one line

Como faço para corrigir isso?

Publicado 03/01/2014 em 13:43
fonte usuário
Em outras línguas...                            


3 respostas

votos
3

Eu sei que isto é uma questão antiga, mas recentemente tive o mesmo problema. Descobri que com restrições eu tive que definir a largura preferencial para obter o reticências se comportar corretamente:

yourLabel.preferredMaxLayoutWidth = width; 

UILable.preferredMaxLayoutWidth

Respondeu 11/04/2016 em 02:51
fonte usuário

votos
2

Swift 2.1

yourLabel.text = "your text"
yourLabel.numberOfLines = 0
yourLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
yourLabel.sizeToFit()
Respondeu 26/11/2015 em 18:20
fonte usuário

votos
2

O problema é iOS6 e antes não atualizará UILabels várias linhas com UIFont personalizado e NSLineBreakByTruncatingTail, mas você pode arquivar o mesmo resultado usando o redimensionamento automático ou autolayout.

Respondeu 03/01/2014 em 16:02
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more