Основной текст точно такой же, как текстовый формат UITextView?

Я пытаюсь настроить CTFrame , который точно соответствует моему текстовому формату UITextView в iPad. Прежде всего, я преобразовал текст UITextView в строку с атрибутами. Затем я настраиваю ширину и высоту поля рисования, в котором Core Text будет рисовать текст. Мне удалось нарисовать текст с помощью Core Text, но UITextView и Core Text показывают несколько разные результаты, хотя я использовал тот же шрифт и размер. В частности, когда я использовал [UIFont systemFontOfSize: 21] , каждое пространство в UITextView содержало на один пиксель больше, чем результат Core Text.

Это нормально для короткого предложения или слова, но если UITextView и Core Text содержат несколько строк, их результат будет сильно отличаться. Например, UITextView выполняет перенос слова для одного слова в конце строки, в то время как Core Text сохраняет это слово в той же строке. Если вы видите прикрепленное изображение, значит, начальные позиции последнего слова «абзац» уже сильно различаются (промежуток в 8 пикселей из-за 8 символов пробела).

Еще хуже, если я использую другие шрифты, такие как добавленный в мой проект, каждый символ в UITextView имеет на 1 пиксель больше.

I ' m, используя Core Text, чтобы найти позицию в пикселях текущего курсора в UITextView , поэтому оба они должны идеально соответствовать друг другу, содержать одинаковое количество символов и слов в каждой строке.

Вопрос: Есть ли способ создать объект Core Text, который идеально соответствует текстовому формату UITextView?

Спасибо!

Вот код, как я настраиваю строку с атрибутами. (Я просто следил за Core Text Guide.)

CTFontRef font = CTFontCreateWithName((CFStringRef) [UIFont systemFontOfSize:21.0].fontName, 21.0, NULL);
CFMutableAttributedStringRef attrString2 = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0);
CFAttributedStringReplaceString (attrString2, CFRangeMake(0, 0), (CFStringRef) string);
CFAttributedStringSetAttribute(attrString2, CFRangeMake(0, [string length]),kCTFontAttributeName, font);

-

-

Вот изображение.

alt text

11
задан Kampai 11 August 2014 в 18:10
поделиться