sizeToFit
sur un UILabel
qui contient du text aligné à droite. Il réduit la hauteur et la largeur du UILabel
et adapte le text en haut à gauche du UILabel
.
Maintenant … la position de l' UILabel
est incorrecte. Comment puis-je faire en sorte que l' UILabel
rest dans sa position d'origine (aligné à droite) ou le déplacer pour qu'il apparaisse à sa position d'origine?
Encore une fois, le problème est que la méthode sizeToFit
la largeur du côté droit de UILabel
. Il traite le text UILabel
comme aligné à gauche. Mais mon text est aligné à droite. Donc, la bordure du côté droit de l' UILabel
est l'endroit où mon text commence.
Vous vérifiez les largeurs avant et après, puis déplacez le centre de la vue à droite par la différence / 2.
En passant, je pense que la "boîte" (cadre) est rétrécie dans les deux directions, gardant le centre intact.
@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