У меня есть a UILabel
это может варьироваться длины в зависимости от того, работает ли мое приложение в режиме портрета или альбомном режиме на iPhone или iPad. Когда текст является слишком длинным для показа на одной строке, и это усекает, я хочу, чтобы пользователь смог нажать его и получить всплывающее окно полного текста.
Как я могу проверить, чтобы видеть если UILabel
действительно ли усечение является текстом? Это даже возможно? Прямо сейчас я просто проверяю на различные длины на основе того, в каком режиме я нахожусь, но он не работает супер хорошо.
Вы можете вычислить ширину строки и посмотреть, больше ли она 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) {
...
}