Текст метки UIButton обрезается - PullRequest
38 голосов
/ 02 января 2011

У меня есть встроенный UIButton Interface Builder, который имеет метку по умолчанию.В XCode я изменяю текст метки динамически следующим образом:

myButton.titleLabel.text = @"this is the new label";

Однако, когда текст обновляется, новая строка обрезается до того же размера, что и исходная строка, и в итоге выглядит как:

this...label

Кто-нибудь знает, почему это происходит?

Ответы [ 6 ]

65 голосов
/ 03 января 2011

Вы должны использовать setTitle: forState: , чтобы изменить заголовок UIButton.Если вы измените заголовок самостоятельно, кнопка не будет указывать на то, что ей нужно изменить размер ярлыка - вам придется сделать что-то вроде этого:работать во всех случаях.Такие методы, как setTitle:forState:, предусмотрены для того, чтобы вы могли предоставлять заголовки для нескольких состояний без необходимости обновления кнопки вручную, и чтобы кнопка знала, что ее нужно выложить с новым заголовком.

28 голосов
/ 03 апреля 2013

Попробуйте использовать метод setTitle кнопки (вместо того, чтобы устанавливать заголовок прямо на этикетке).Размер заголовка должен быть изменен.

Цель C:

[myButton setTitle:@"This is the text" forState:UIControlStateNormal];

Или в Swift:

myButton.setTitle("This is the text", for: .normal)
20 голосов
/ 01 июня 2012

Альтернативное решение - позволить внутренней UILabel UIButton уменьшить размер шрифта, как это делает UILabel:

button.titlelabel.minimumFontSize = 8.0; // or some more adequate size
self.buttonWithLongTitle.titleLabel.adjustsFontSizeToFitWidth = YES;
8 голосов
/ 02 января 2011

Звоните sizeToFit на вашу кнопку. Это изменит размер кнопки, чтобы соответствовать тексту.

1 голос
/ 04 января 2011

Если это не помогло, вы всегда можете определить размер строки и настроить ширину рамки кнопки.В этом случае вы уверены, что он подойдет.

// Calculate the size 
CGSize buttonSize = [@"My text.." sizeWithFont:[UIFont systemFontOfSize:15.0]
                    constrainedToSize:someSize lineBreakMode:UILineBreakModeWordWrap];

// Do whatever you want with the "buttonSize", you can for example adjust your button's frame width
0 голосов
/ 19 апреля 2019

Решение в Swift 4.2

yourButton.titleLabel?.minimumScaleFactor = 0.5 //set whatever you want here to scale
yourButton.titleLabel?.adjustsFontSizeToFitWidth = true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...