¿Cómo devuelve un texto CGSize multilínea del nuevo método iOS 7 sizeWithAttributes?
Me gustaría que esto produzca los mismos resultados que sizeWithFont: restrictinedToSize.
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 solo produce la altura para una sola línea de texto.
objective-c
ios7
Morcutt
fuente
fuente
Respuestas:
bueno, puedes probar esto:
fuente
@{...}
. Como se llamasizeWithFont:constrainedToSize:
método original que estaba en desuso. Apple realmente debe odiarnos. En cualquier caso, +1.MAXFLOAT
lugar deCGFLOAT_MAX
?var size = textToMeasure.boundingRectWithSize( CGSizeMake(width, CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes:attrs, context:nil).size
Así es como lo hice:
fuente
Swift 2.3:
Swift 4:
fuente
Aquí está mi método para lidiar con ambas situaciones, va en una
NSString
categoría.fuente
Para Xamarin.iOS:
fuente
Si tiene el texto, la fuente, el número de líneas y el ancho de su conjunto de etiquetas, este método devuelve el tamaño de su etiqueta:
fuente
Como alternativa, si está viendo
UITextView
, siempre puede usar elNSLayoutManager
método:También puede encontrar la altura de línea para una fuente dada:
fuente
[Como usuario nuevo, no puedo publicar un comentario en la respuesta de @ testing, pero hacer que su respuesta (para xamarin.ios) sea más útil]
Podemos devolver un CGRect y solo usar el parámetro de altura para el elemento de interfaz gráfica de usuario al que apuntamos UIButton, etc.Pasar los parámetros que necesitemos a continuación
fuente
utilizar el
ceilf
método para administrar adecuadamentefuente