В iOS - как мне вписать UILabel в текст, не меняя его положение? - PullRequest
9 голосов
/ 05 апреля 2011

Я звоню sizeToFit на UILabel, в котором есть текст, выровненный по правому краю.Он сжимает высоту и ширину UILabel и помещает текст в верхний левый угол UILabel.

Теперь ... позиция UILabel неверна.Как я могу заставить UILabel остаться в исходном положении (выровнено по правому краю) или переместить его так, чтобы он появился в исходном положении?

Еще раз - проблема в том, что метод sizeToFit сокращаетсяширина с правой стороны UILabel.Он обрабатывает текст UILabel как выровненный по левому краю.Но мой текст выровнен.Итак, с правой стороны границы UILabel начинается мой текст.

Ответы [ 2 ]

16 голосов
/ 21 мая 2013
@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
3 голосов
/ 05 апреля 2011

Вы проверяете ширину до и после, затем перемещаете центр вида вправо на разницу / 2.

Кстати, я думаю, что «коробка» (рамка) сжимается в обоих направлениях, сохраняя центр в целости.

...