In iOS - How do I fit a UILabel to its text, without changing its position?
Asked Answered
M

2

9

I'm calling sizeToFit on a UILabel which has right aligned text in it. It shrinks the height and width of the UILabeland fits the text to the top left of the UILabel.

Now...the position of the UILabel is incorrect. How can I make the UILabel stay in its original position (right aligned) or move it so it'll appear at its original position?

Once again - the problem is that the sizeToFit method is shrinking the width from the right side of the UILabel. It is treating the UILabel text as left aligned. But my text is right aligned. So, the right side border of the UILabel is where my text begins.

Marla answered 5/4, 2011 at 8:32 Comment(0)
J
3

You check the widths before & after, then move the center of the view right by the difference / 2.

By the way, I think the "box" (frame) is shrunk in both directions, keeping the center intact.

Jaimie answered 5/4, 2011 at 9:1 Comment(0)
R
16
@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
Ruddie answered 21/5, 2013 at 10:53 Comment(0)
J
3

You check the widths before & after, then move the center of the view right by the difference / 2.

By the way, I think the "box" (frame) is shrunk in both directions, keeping the center intact.

Jaimie answered 5/4, 2011 at 9:1 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.