2016-07-21 3 views
2

Я пытаюсь установить букву «6» внутри UIButton, чтобы шрифт автоматически уменьшался, когда программа запускается на маленьком экранном устройстве, так что буква 6 находится со всех сторон.Изменить размер шрифта, чтобы он полностью соответствовал тексту внутри кнопки?

Я нашел несколько других потоков, предлагающих решения одной и той же проблемы, но по какой-то причине они не работают для меня. Несколько нитей я нашел, были:

Я попытался следующие две кодовые последовательности, но ни один не получает работу:

Что мне делать?

1:

self.sixButton.titleLabel!.numberOfLines = 0; 
self.sixButton.titleLabel!.adjustsFontSizeToFitWidth = true; 
self.sixButton.titleLabel!.lineBreakMode = NSLineBreakMode.ByWordWrapping 

2:

self.sixButton.titleLabel!.minimumScaleFactor = 0.5; 
self.sixButton.titleLabel!.numberOfLines = 0; 
self.sixButton.titleLabel!.adjustsFontSizeToFitWidth = true; 

3: То же самое, что и выше, но с self.sixButton.titleLabel!.numberOfLines = 1;.

Я использую Swift 2.2 с Xcode 7.3.1.

Изображение кнопки во время разработки:

enter image description here

картина кнопки во время выполнения:

enter image description here

+0

Hi. Каков размер шрифта вашего titleLabel? –

+0

120 (шрифт Verdana). Я просто увеличил шрифт, чтобы увидеть, будет ли он автоматически уменьшаться или нет. Как очевидно, он не уменьшался. – Ahmad

+0

Вы можете программно вычислить размер перед рукой, как здесь: http://stackoverflow.com/questions/19128797/calculating-uilabel-text-size – Farini

ответ

1

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

+0

Ну, это самый очевидный способ сделать это, но мне интересно, есть ли способ автоматизировать всю эту логику. – Ahmad

+0

Я понимаю. Я предполагаю, что нет _built-in_ way. Конечно, как только вы пишете код, логика автоматизирована; вот какой код.:) – matt

+0

Я должен указать, однако, что более обычным является делать противоположное тому, что вы делаете: установите текст в нужном шрифте и размере и дайте кнопке изменить размер, чтобы он соответствовал. В конце концов, это то, что он хочет. – matt

0

Моим решением было бы иметь ярлык и невидимую кнопку, которые работают вместе. Невидимая кнопка находится поверх метки. Поведение текста в ярлыке более гибкое и предсказуемое, чем поведение кнопки в моем опыте. Это, вероятно, не самое умное или slickest решение, но оно отлично работает, и безболезненно реализовать. Вам просто нужно убедиться, что ваши ограничения поддерживают выравнивание кнопки и метки.

Смежные вопросы