2011-04-05 12 views
9

Llamo a sizeToFit en un UILabel que tiene texto alineado a la derecha en él. Reduce el alto y el ancho del UILabel y ajusta el texto en la parte superior izquierda del UILabel.En iOS: ¿Cómo ajusto un UILabel a su texto, sin cambiar su posición?

Ahora ... la posición del UILabel es incorrecta. ¿Cómo puedo hacer que el UILabel permanezca en su posición original (alineado a la derecha) o lo mueva para que aparezca en su posición original?

Una vez más, el problema es que el método sizeToFit está reduciendo el ancho desde el lado derecho de UILabel. Está tratando el texto UILabel como alineado a la izquierda. Pero mi texto está alineado a la derecha. Entonces, el borde del lado derecho de UILabel es donde comienza mi texto.

Respuesta

3

Usted comprueba los anchos antes & después, a continuación, pasar el centro de la visión correcta de la diferencia/2.

Por cierto, creo que la "caja" (marco) se contrae en ambas direcciones, manteniendo el centro intacto

15
@implementation UILabel (Additions) 

- (void)sizeToFitWithAlignmentRight { 
    CGRect beforeFrame = self.frame; 
    [self sizeToFit]; 
    CGRect afterFrame = self.frame; 
    self.frame = CGRectMake(beforeFrame.origin.x + beforeFrame.size.width - afterFrame.size.width, self.frame.origin.y, self.frame.size.width, self.frame.size.height); 
} 

@end 
+0

limpio. ¡buena sugerencia! – Rambatino

Cuestiones relacionadas