Como você retorna um CGSize de texto com várias linhas do novo método iOS 7 sizeWithAttributes?
Gostaria que isso produzisse os mesmos resultados que sizeWithFont: constrainedToSize.
NSString *text = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eu urna quis lacus imperdiet scelerisque a nec neque. Mauris eget feugiat augue, vitae porttitor mi. Curabitur vitae sollicitudin augue. Donec id sapien eros. Proin consequat tellus in vehicula sagittis. Morbi sed felis a nibh hendrerit hendrerit. Lorem ipsum dolor sit."
CGSize textSize = [text sizeWithAttributes:@{ NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:16.0] }];
Este método produz apenas a altura para uma única linha de texto.
objective-c
ios7
morcutt
fonte
fonte
Respostas:
bem, você pode tentar isso:
fonte
@{...}
. Como isso é chamado?sizeWithFont:constrainedToSize:
método original que foi preterido. A Apple deve realmente nos odiar. De qualquer forma, +1.MAXFLOAT
vez deCGFLOAT_MAX
?var size = textToMeasure.boundingRectWithSize( CGSizeMake(width, CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes:attrs, context:nil).size
Foi assim que eu fiz:
fonte
Swift 2.3:
Swift 4:
fonte
Aqui está o meu método para lidar com ambas as situações, entra em uma
NSString
categoria.fonte
Para o Xamarin.iOS:
fonte
Se você tiver o texto, fonte, numberOfLines e largura do seu conjunto de etiquetas, esse método retornará o tamanho da sua etiqueta:
fonte
Como alternativa, se você estiver olhando
UITextView
, sempre poderá usar oNSLayoutManager
método:Você também pode encontrar a altura da linha para uma determinada fonte:
fonte
[Como novo usuário, não posso postar um comentário na resposta de @ testing, mas para tornar sua resposta (para xamarin.ios) mais útil]
Podemos retornar um CGRect e usar apenas o parâmetro height para o item da GUI que estamos direcionando ao UIButton etc.
fonte
use o
ceilf
método para gerenciar corretamentefonte