简体   繁体   中英

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

I'm calling sizeToFit on a UILabel which has right aligned text in it. It shrinks the height and width of the UILabel and 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.

@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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM