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

Как работает UILabel minimumScaleFactor?

Я использовал minimumFontSize раньше, но эта функция теперь устарела, и я не совсем понимаю, как работает minimumScaleFactor.

Я хочу, чтобы максимальный размер шрифта был равным 10, а минимальный - 7.

Как я могу добиться изменения размера до размера шрифта 7 с коэффициентом масштабирования?

UILabel создание:

UILabel *label = [[UILabel alloc] init];
[label setTranslatesAutoresizingMaskIntoConstraints:NO];
label.text =  [labelName uppercaseString];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.font = [UIFont fontWithName:HELVETICA_FONT_STYLE_BOLD size:9.5];
label.backgroundColor = [UIColor clearColor];
label.minimumScaleFactor = .1f;

[label addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[label(WIDTH)]"
                                                              options:0
                                                              metrics:@{@"WIDTH" : [NSNumber numberWithFloat:buttonSize.width]}
                                                                views:NSDictionaryOfVariableBindings(label)]];

[contentView addSubview:label];
4b9b3361

Ответ 1

Вам нужно установить label.adjustsFontSizeToFitWidth = YES;

Ответ 2

В дополнение к тому, что говорят другие ответы, если вы поместите minSize/defaultSize (деление) в качестве minimumScaleFactor, это будет то же самое, что использовать старый minimumFontSize.

Ex, если вы хотите, чтобы минимальный размер шрифта был равным 10 с использованием размера метки по умолчанию, вы можете сделать:

[label setMinimumScaleFactor:10.0/[UIFont labelFontSize]];

(Замените [UIFont labelFontSize] вашим размером шрифта метки, если он не является значением по умолчанию).

который будет таким же, как: [label setMinimumFontSize:10.0];

Ответ 3

В соответствии с documentation:

Используйте это свойство, чтобы указать наименьший множитель для текущего размера шрифта, который дает приемлемый размер шрифта, который будет использоваться при отображении текста меток. Если для этого свойства указывается значение 0, текущий размер шрифта используется как наименьший размер шрифта.

Итак, если размер шрифта по умолчанию для вашего ярлыка 10, вы помещаете 0.7f в качестве minimumScaleFactor и должны делать то же самое, что и minimumFontSize.

Ответ 4

В дополнение к другим ответам, я собираюсь добавить удобное для начинающих объяснение, которое помогло мне самому:

Как рассчитать minimumScaleFactor? Разделите минимальный размер шрифта вашей метки по размеру шрифта по умолчанию. Например, размер шрифта по умолчанию - 25. Минимальный размер шрифта - 10.

10/25 = 0,4

0.4 - ваше значение minimumScaleFactor. Также см. @Jsdodgers ответ выше.