Как узнать, сокращен ли текст UILabel? - PullRequest
3 голосов
/ 10 ноября 2011

Я работаю над приложением для iOS (iPhone и iPad), и у меня есть UILabel на моем экране, который отображает некоторый текст. Если текст слишком длинный, UILabel автоматически сжимает его, например:

«Это какой-то длинный текст» будет отображать «Это какой-то ...»

Такое поведение является правильным, полностью приемлемым и даже ожидаемым, но я хотел бы знать, был ли текст сокращен или нет. Есть ли способ узнать, сократил ли UILabel свое содержание?

Мне нужно действительно простое решение, потому что я хотел бы использовать магические функции UILabel, такие как автоматическое уменьшение размера шрифта до нужного размера и т. Д. Иногда текст будет очень длинным, поэтому я дам пользователю способ увидеть все это в другом виде. после нажатия кнопки. Но в случае, если текст не будет таким длинным, я хотел бы скрыть эту кнопку, чтобы сделать интерфейс простым. Любая идея, как этого добиться, будет оценена.

Ответы [ 2 ]

6 голосов
/ 10 ноября 2011

Спросите текст на этикетке, его длина у стандартного шрифта на этикетке.Если это больше, чем ширина метки, она будет уменьшена до размера.

CGSize stringSize = [aLabel.text sizeWithFont:aLabel.font];
if (stringSize.width > aLabel.frame.size.width) {
        // It's drawing the label with a reduced font.
}

Примечание. Это старый ответ.Когда Apple обновляет свои API, некоторые вещи должны измениться.Базовый метод все еще работает, но используемый метод должен быть обновлен.См. Ответ Vins для обновления.

3 голосов
/ 28 июля 2015

В iOS 7 sizeWithFont устарела.

CGSize stringSize = [aLabel.text sizeWithAttributes:@{NSFontAttributeName: aLabel.font}];
    if (stringSize.width > aLabel.frame.size.width) {
            // It's drawing the label with a reduced font.
    }

если метка многострочная:

CGSize stringSize = [aLabel.text sizeWithAttributes:@{NSFontAttributeName: aLabel.font}];
    if (stringSize.width > aLabel.frame.size.width*numOfLines) {
            // It's drawing the label with a reduced font.
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...