Как я могу найти Rect обернутого текста на iPhone?
Кто-нибудь может порекомендовать хороший метод для определения Rect некоторого обернутого текста на iPhone? Я попробовал все встроенные методы для NSString в 2.1 SDK безрезультатно. Методы размера никогда не возвращают размеры, которые позволяют мне полностью разместить обернутый текст в моем пользовательском представлении.
Я рисую некоторый настраиваемый пользователем текст, который всегда должен быть максимально большим в пределах моего пользовательского представления. Если я могу определить прямоугольник, необходимый для полного вложения обернутого текста для заданной максимальной ширины и размера шрифта, я могу увеличивать или уменьшать размер шрифта до тех пор, пока текст не станет достаточно большим, чтобы полностью заполнить пользовательский вид без обрезки.
Любая помощь высоко ценится!
3 ответа
SizeWithFont:constrainedToSize: метод NSString может быть полезным:
CGSize sizeForText = [theText sizeWithFont:theFont constrainedToSize:CGSizeMake(myMaxWidth, 9999)];
Вы говорите, что перепробовали все методы определения размера, но на основании вашего описания это звучит как то, что вы ищете.
Я обнаружил, что всякий раз, когда вы устанавливаете свойство text вашего UITextView, оно обновляет свое свойство contentSize. Это позволяет очень легко изменить размер рамки текстового представления для отображения в виде прокрутки и т. Д.
Поскольку вы знаете размер своего представления, вызовите функцию sizeWithFont: forWidth: lineBreakMode: NSString, начиная с минимального размера шрифта, ширины вашего представления и UILineBreakModeWordWrap. Затем увеличивайте размер шрифта, пока возвращаемый размер не станет таким же высоким, как ваш вид.
Если вы хотите установить максимальный размер шрифта, вы можете также реализовать это как бинарный поиск, а не увеличивать размер шрифта.