Подтвердить что ты не робот

Обрезание UILabel при настройкеFontSizeToFitWidth

Когда я добавляю текст к метке с adjustsFontSizeToFitWidth, установленным в YES, текст больше не центрируется по вертикали и, в конце концов, скопирует текст в нижней части рамки метки. Для большого количества текста он в конце концов исчезнет со дна этикетки.

View background is blue, label background is white

Это то, что происходит, если вы добавляете меньше текста:

enter image description here

Это обрезается, как и следовало ожидать (т.е. размер шрифта не уменьшался, текст был вертикально центрирован в метке и обрезался сверху и снизу.

enter image description here

Вот код для воспроизведения:

- (void)loadView {
    [super loadView];

    self.view.backgroundColor = [UIColor blueColor];
    testLabel = [[UILabel alloc] init];
    testLabel.font = [UIFont boldSystemFontOfSize:172];
    testLabel.textColor = [UIColor blackColor];
    testLabel.adjustsFontSizeToFitWidth = YES;
    testLabel.numberOfLines = 1;
    testLabel.frame = CGRectMake(50, 50, 300, 100);
    testLabel.text = @"123";

    [self.view addSubview:testLabel];
}

Должно ли это случиться? И как мне заставить мой ярлык центрировать по вертикали независимо от количества символов в моей метке.

4b9b3361

Ответ 1

Добавить

testLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters;

к вашему коду, чтобы вертикально-центрировать текст по шкале шрифта.

Ответ 2

Также хотелось бы добавить, что adjustsFontSizeToFitWidth не слишком хорошо работает с атрибутом текста, поэтому добавьте свои атрибуты на ярлык вместо атрибута, если сможете. Это сработало для меня.