Как проверить, является ли UILabel усеченным?

У меня есть a UILabel это может варьироваться длины в зависимости от того, работает ли мое приложение в режиме портрета или альбомном режиме на iPhone или iPad. Когда текст является слишком длинным для показа на одной строке, и это усекает, я хочу, чтобы пользователь смог нажать его и получить всплывающее окно полного текста.

Как я могу проверить, чтобы видеть если UILabel действительно ли усечение является текстом? Это даже возможно? Прямо сейчас я просто проверяю на различные длины на основе того, в каком режиме я нахожусь, но он не работает супер хорошо.

97
задан Karthik Kumar 23 June 2017 в 13:53
поделиться

1 ответ

Вы можете вычислить ширину строки и посмотреть, больше ли она label.bounds.size.width

В NSString UIKit Additions есть несколько методов для вычисления размера строки с определенным шрифтом. Однако, если у вас есть минимальный размер шрифта (minimumFontSize) для вашей метки, который позволяет системе уменьшить текст до этого размера. В этом случае вы можете использовать sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:.

CGSize size = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];
if (size.width > label.bounds.size.width) {
   ...
}
102
ответ дан 24 November 2019 в 05:22
поделиться