controles ios swift uilabel

ios - controles - ¿Cómo obtener el ancho correcto de una UILabel después de configurar el texto?



uilabel padding swift (2)

Debes usar [label sizeToFit]

sizeToFit en la etiqueta estirará la etiqueta para acomodar el texto.

La otra solución es calcular el ancho de la cadena y replantear la etiqueta en función del ancho de las cadenas.

Para la segunda solución puedes calcular el tamaño de la cadena como

CGSize strSize = CGSizeZero; CGSize minSize = CGSizeZero; if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { NSAttributedString *attributedText = [[[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: label.font}] autorelease]; CGRect rect = [attributedText boundingRectWithSize:constraintSize options:NSStringDrawingUsesLineFragmentOrigin context:nil]; strSize = rect.size; } else { strSize = [text sizeWithFont:label.font constrainedToSize:constraintSize]; }

Obtengo el ancho de una UILabel [después de que el texto se haya configurado] con:

myUILabel.frame.width

pero siempre es el mismo ancho, no importa si contiene la cadena: "Hello." o la cadena: "Hello everyone on this planet." . Pero la UILabel necesita tener un ancho mayor con la segunda Cuerda.


Pruebe myUILabel.intrinsicContentSize() . Asegúrese de configurar su fuente primero, por supuesto.