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

Отрегулируйте размер шрифта для текста в UIButton

Я хочу, чтобы текст кнопки вписывался в UIButton, а UIButton имеет фиксированный размер.

Конечно, я могу получить доступ к titleLabel UIButton. В метке я установил бы autoshrink минимальную шкалу шрифта, которая, по-видимому, соответствует

self.myButton.titleLabel.adjustsFontSizeToFitWidth = YES;

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

Как я могу на самом деле настроить размер шрифта этикетки программно, чтобы текст вписывался в границы меток (как показано в Цель на рисунке ниже)?

adjustsFontSizeToFitWidth фактически не регулирует размер шрифта, чтобы он соответствовал кадру, только ширина

Я уже пробовал

self.myButton.titleLabel.numberOfLines = 0;
self.myButton.titleLabel.minimumScaleFactor = 0.5f;

без успеха, всегда заканчивается как в adjustsFontSizeToFitWidth в левой части рисунка выше.

Изменить. Решение также должно соответствовать ios7

4b9b3361

Ответ 1

self.mybutton.titleLabel.minimumScaleFactor = 0.5f;
self.mybutton.titleLabel.numberOfLines = 0;   <-- Or to desired number of lines
self.mybutton.titleLabel.adjustsFontSizeToFitWidth = YES;

... сделал трюк, после layoutIfNeeded в viewDidLoad Как оказалось, все они должны быть настроены на то, чтобы на самом деле настроить размер шрифта, а не просто вставлять его в рамку.

Обновление для Swift 3:

mybutton.titleLabel?.minimumScaleFactor = 0.5
mybutton.titleLabel?.numberOfLines = 0   <-- Or to desired number of lines
mybutton.titleLabel?.adjustsFontSizeToFitWidth = true

Ответ 2

Попробуйте вызвать следующий метод.

button.titleLabel?.baselineAdjustment = UIBaselineAdjustment.AlignCenters

Ответ 3

Обновлен код для Swift 3.0:

    yourButton.titleLabel?.minimumScaleFactor = 0.5
    yourButton.titleLabel?.numberOfLines = 0
    yourButton.titleLabel?.adjustsFontSizeToFitWidth = true

Ответ 4

попробуйте следующее:

[myButton setFont:[[myButton font] fontWithSize:--originalButtonFontSize]];
        textWidth = [text sizeWithFont:[myButton font]].width;
    }

Ответ 5

Вы также можете установить атрибут Runtime User Defined Runtime в построителе интерфейса для кнопки, где "titleLabel.adjustsFontSizeToFitWidth" = true

Ответ 6

В Xcode- > Open storyboard- > Перейти к атрибутам inspector- > Control- > Alignment- > Выбрать второй как по горизонтали, так и по вертикали.

или

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

Ответ 7

Запишите эту строку после вашего кода:

yourButton.SizeToFitWidth=YES;

Ответ 8

Если вы предпочитаете делать в раскадровке, просто нажмите кнопку, затем покажите атрибут атрибутов и установите разрыв строки на "Word Wrap".

word wrap