Estoy tratando de aplicar sangría al texto en un UILabel para dejar un margen alrededor del texto que muestra el color de fondo. Siguiendo la sugerencia here He anulado textRectForBounds:limitedToNumberOfLines:
así:UILabel textRectForBounds no tiene ningún efecto al intentar crear el margen
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines
{
CGRect intermediate = CGRectMake(bounds.origin.x+MARGIN,bounds.origin.y+MARGIN,bounds.size.width-2*MARGIN,bounds.size.height-2*MARGIN);
return [super textRectForBounds:intermediate limitedToNumberOfLines:numberOfLines];
}
Pero no importa lo que haga, el texto termina apretada contra el borde izquierdo del rectángulo. Parece como si el dibujo estuviera ignorando la parte de origen del CGRect devuelto (aunque parece respetar la parte del ancho, como si redujera el ancho del intermedio a, por ejemplo, bounds.size.width-200
, el rect que devuelve textRectForBounds es estrecho y el texto está dibujado en una columna larga y delgada).
Entonces, ¿qué más necesito hacer con el UILabel
para hacer que el dibujo respete el origen textForRectBounds
-returned-rect.x y origin.y? Prefiero no anular el UILabel
de drawTextInRect
si puedo evitarlo.
Actualización: Esto fue hace mucho tiempo y no recuerdo exactamente por qué la otra pregunta no funcionó para mí. Creo que fue porque estaba tratando de tener un UILabel
con varias líneas, y la solución here no funcionó en ese caso.
¿Has probado a devolver 'intermediate' directamente? –
sí, pero no hace ninguna diferencia. – damian