Чем CTTypesetterCreateLineWithOffset отличается от CTTypesetterCreateLine? - PullRequest
2 голосов
/ 11 февраля 2011

В документах говорится, что вызов CTTypesetterCreateLine - это то же самое, что вызов CTTypesetterCreateLineWithOffset с offset, установленным на 0.0, но описание того, что означает offset, скорее отсутствует: «Смещение позиции строки».

Я пытался предоставить ему различные значения, и это, похоже, не влияет на типографские границы или границы изображения в результате CTLineRef, и при этом не похоже, что оно влияет на результат рисования линии с использованием CTLineDraw. Кто-нибудь может подсказать мне, какова цель этого дополнительного параметра?

1 Ответ

4 голосов
/ 22 февраля 2011

Смещение является смещением табуляции. Это относится не к строке в целом, а к первой табуляции.

С http://lists.apple.com/archives/Coretext-dev/2011/Feb/msg00021.html

Вы создаете строку, содержащую вкладку типа «A [tab] B» с позицией вкладки в 200. Когда вы создаете линию со смещением Zero и рисуете ее в точке (x, y), она будет выглядеть следующим образом.

A             B
(x,y)         (x+200,y)

Когда вы создаете линию со смещением 50 и рисуете ее в точке (x + 50, y) (← вам нужно настроить координату X самостоятельно), она будет выглядеть так A B (х + 50, у) (х + 200, у)

Обратите внимание, что «B» остается в той же позиции, даже если линия начинается в другой позиции. Если бы вы передавали смещение 0 и рисовали его в точке (x + 50, y), это было бы следующим образом.

A                B
(x+50,y)         (x+250,y)
...