¿Cómo puedo hacer que una UILabel sea más amplia de lo que debería ser, por 5 puntos?

Tengo una UILabel, tiene un color de background como verde. Pero envuelve el text muy de cerca. Necesito el background verde para ser un poco más ancho que el text, aproximadamente 5 puntos. ¿Cómo puedo conseguir esto?

Detalles

La label se crea en el guión gráfico y tiene restricciones horizontales. Puede ignorar las restricciones como supongo, porque lo he manejado para cualquier ancho.

Requisito sugerido

Creo que necesito un método que pueda anular en la subclass de UILabel, para boost su ancho en 5 puntos. ¿Alguien sabe qué método debo anular?

Puede tratar de subclasificar la class UILabel y anular el siguiente método:

- (void)drawTextInRect:(CGRect)rect { UIEdgeInsets insets = {0, 5, 0, 5}; [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)]; } 

Espero que esto te ayude!

Puedes lograrlo llamando primero a sizeToFit, networkingucirá el marco y se ajustará al text, entonces puedes boost el ancho por 10 píxeles y recordar mantenerlo alineado en el centro.

Espero que ayude … Házmelo saber … 🙂

¡Finalmente solucioné mi problema! Funciona muy bien así –

Cree una subclass de UILabel y UILabel intrinsicContentSize y sizeThatFits para lograr lo que desea.

Entonces algo como:

 - (CGSize) intrinsicContentSize { return [self addHorizontalPadding:[super intrinsicContentSize]]; } - (CGSize)sizeThatFits:(CGSize)size { return [self addHorizontalPadding:[super intrinsicContentSize]]; } - (CGSize)addHorizontalPadding:(CGSize)size { if (size.width > 0) return CGSizeMake(size.width + (2*kSomeHorizontalPaddingValue), size.height); else return size; } 

Tenga en count que esto solo toca el relleno horizontal, pero obviamente puede modificarse para agregar relleno vertical también.

Creo que el código a continuación funcionará para usted

 CGFloat width = [label.text sizeWithFont:[UIFont systemFontOfSize:22 ]].width; label.frame = CGRectMake(point.x, point.y, width+5,height);