Расчетная структура подкласса UILabel

Суть в том, что я пытаюсь воспроизвести интерфейс, который есть у iMessage. Для метки: специальное заполнение этого типа текста заставило меня создать собственную UILabel. Вот код под drawTextInRect:

[super drawTextInRect:UIEdgeInsetsInsetRect(rect, UIEdgeInsetsMake(0, 15.0, 5.0, 15.0))];

Никаких загадок на данный момент.

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

cell.message.layer.cornerRadius = 18;
[cell.message sizeToFit];

Видимо, я не могу получить правильную высоту и ширину этого ярлыка. Я использую sizeToFit, а затем я измеряю возможные размеры с помощью "sizeWithFont:" (не рекомендуется в iOS 7) и "boundingRectWithSize:". Единственный способ правильного отображения текста - это добавление вручную неопределенного размера к высоте и ширине после выполнения расчетов.

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

У ссылки есть экран некоторых экранов, которые не отображаются должным образом.

1 ответ

Решение

Единственный ответ, который я смог увидеть, глядя на код от других людей, - это то, что они в какой-то момент делают свои собственные расчеты на основе размера букв.

Любой с этой проблемой проверьте: https://github.com/jessesquires/MessagesTableViewController

Это был единственный источник, который я смог найти, в конце для некоторых случаев boundingRectWithSize недостаточно хорош.

Другие вопросы по тегам