Nano Hash - криптовалюты, майнинг, программирование

Как узнать ширину усеченного текста UILabel

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

sizeThatFits возвращает длину неусеченного текста, поэтому на данный момент я могу только определить, когда будет выполнено усечение. Нужно знать, сколько видно, включая эти три точки. Какие-нибудь советы?

Пояснение: когда текст усекается, он обычно короче ширины UILabel.

11.10.2010

Ответы:


1

Робот К прав.

Если бы я был вами, я бы сделал следующее:

  UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 24)];
  label.text = @"this is some really long text that i want in a small label";
  [view addSubview:label];

  CGSize size = [label.text sizeWithFont:label.font constrainedToSize:label.frame.size  
                 lineBreakMode:label.lineBreakMode];

Это должно дать вам значение меньше 200 (с учетом ограниченного максимального размера и метода усечения).

11.10.2010
  • Робот K подходит для случая с несколькими строками, но моя проблема была с одной строкой. Вы были тем, кто упомянул lineBreakMode, который, кроме того, также является универсальным решением. Спасибо! 11.10.2010

  • 2

    Я не понимаю, почему ширина будет отличаться от ширины UILabel, если текст усекается. В любом случае вы можете использовать sizeWithFont:constrainedToSize: для вычисления размера строки с заданным шрифтом, но ограниченным "ограничивающим размером".

    11.10.2010
  • Потому что ширина усеченного текста может быть меньше! Не спрашивал бы, если бы это было так же, как ширина UILabel. Размер шрифта фиксирован и равен 15, но мы проверим, даст ли sizeWithFont что-то еще, кроме sizeThatFits. 11.10.2010
  • Ширина UILabel 205, одна строка. sizeThatFits — 291, sizeWithFont:constrainedToSize — 163, sizeWithFont:constrainedToSize:lineBreakMode — 203, sizeWithFont:forWidth:lineBreakMode — 203. Спасибо за указание на разницу между решениями 163 и 203! 11.10.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..