Расчетная структура подкласса 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 недостаточно хорош.