Ответ 1
Добавить
testLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters;
к вашему коду, чтобы вертикально-центрировать текст по шкале шрифта.
Когда я добавляю текст к метке с adjustsFontSizeToFitWidth
, установленным в YES
, текст больше не центрируется по вертикали и, в конце концов, скопирует текст в нижней части рамки метки. Для большого количества текста он в конце концов исчезнет со дна этикетки.
Это то, что происходит, если вы добавляете меньше текста:
Это обрезается, как и следовало ожидать (т.е. размер шрифта не уменьшался, текст был вертикально центрирован в метке и обрезался сверху и снизу.
Вот код для воспроизведения:
- (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];
}
Должно ли это случиться? И как мне заставить мой ярлык центрировать по вертикали независимо от количества символов в моей метке.
Добавить
testLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters;
к вашему коду, чтобы вертикально-центрировать текст по шкале шрифта.
Также хотелось бы добавить, что adjustsFontSizeToFitWidth не слишком хорошо работает с атрибутом текста, поэтому добавьте свои атрибуты на ярлык вместо атрибута, если сможете. Это сработало для меня.