Quiero mostrar una imagen junto a un UILabel, sin embargo, UILabel tiene una longitud de texto variable, por lo que no sé dónde colocar la imagen. ¿Cómo puedo lograr esto?
142
CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font
constrainedToSize:maximumLabelSize
lineBreakMode:yourLabel.lineBreakMode];
¿Para qué sirve - [NSString sizeWithFont: forWidth: lineBreakMode:]?
Esta pregunta podría tener su respuesta, funcionó para mí.
¡Para 2014, edité esta nueva versión, basada en el comentario ultra práctico de Norbert a continuación! Esto lo hace todo. Salud
// yourLabel is your UILabel.
float widthIs =
[self.yourLabel.text
boundingRectWithSize:self.yourLabel.frame.size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{ NSFontAttributeName:self.yourLabel.font }
context:nil]
.size.width;
NSLog(@"the width of yourLabel is %f", widthIs);
[yourString boundingRectWithSize:maximumLabelSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName:yourLabel.font } context:nil];
self.yourLabel.intrinsicContentSize
esto le dará el tamaño del contenido de la etiqueta, por lo que puede obtener el ancho desde allí.yourLabel.intrinsicContentSize.width
funciona muy bien, verifique la respuesta a continuación.yourLabel.intrinsicContentSize.width
para Objective-C / Swiftfuente
En rápido
fuente
La respuesta seleccionada es correcta para iOS 6 y siguientes.
En iOS 7,
sizeWithFont:constrainedToSize:lineBreakMode:
ha quedado en desuso . Ahora se recomienda su usoboundingRectWithSize:options:attributes:context:
.Tenga en cuenta que el valor de retorno es un
CGRect
no aCGSize
. Esperemos que sea de alguna ayuda para las personas que lo usan en iOS 7.fuente
En iOS8 sizeWithFont ha quedado en desuso, consulte
Puede agregar todos los atributos que desee en sizeWithAttributes. Otros atributos que puede establecer:
y así. Pero probablemente no necesitarás a los demás
fuente
Swift 4 Responde quién está usando Restricción
Swift 5 Responde quién está usando Restricción
fuente
fuente
Aquí hay algo que se me ocurrió después de aplicar algunos principios a otras publicaciones SO, incluido el enlace de Aaron:
En este ejemplo, estoy agregando un pin personalizado a una clase MKAnnotation que cambia el tamaño de un UILabel de acuerdo con el tamaño del texto. También agrega una imagen en el lado izquierdo de la vista, para que vea parte del código que administra el espacio adecuado para manejar la imagen y el relleno.
La clave es usar
CGSize titleSize = [myAnnotation.THETEXT sizeWithFont:[UIFont systemFontOfSize:12]];
y luego redefinir las dimensiones de la vista. Puede aplicar esta lógica a cualquier vista.Aunque la respuesta de Aaron funciona para algunos, no funcionó para mí. Esta es una explicación mucho más detallada que debe probar inmediatamente antes de ir a otro lugar si desea una vista más dinámica con una imagen y UILabel redimensionable. ¡Ya hice todo el trabajo por ti!
fuente