2015-02-06 1 views
10

iOS7 и более поздние версии, мы можем использовать - (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context, чтобы рассчитать размер строки, но я смущен комментариями к NSStringDrawingOptions перечислениям.Confused by NSStringDrawingOptions item значение

NSStringDrawingUsesLineFragmentOrigin

Это значит указано происхождение фрагмент линии происхождения, не базовая линия происхождения. Но какое значение имеет происхождение фрагмента линии и исходное происхождение.

Так же, как WWDC 2013 Session 220 (Advanced Text макеты и эффекты с текстом Kit) PDF на странице 95.

Если фрагмент линии происхождение означает синюю точку, какое базовое линия происхождение?

ответ

9

From the official documentation

Обсуждение

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

Если NSStringDrawingUsesLineFragmentOrigin не указан в настройках, происхождения прямоугольника является базовым единственной линией. Текст над текстом будет отображаться над прямоугольником, а не внутри него. Например, для , если вы укажете прямоугольник, начинающийся с 0,0, и нарисуйте строку «сопоставлено», будут отображаться только отрисовки «j» и «p», . Остальная часть текста будет на верхнем краю прямоугольника.

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

Особые соображения Этот метод использует начало базовой линии по умолчанию , поэтому он отображает строку как одну строку. Чтобы отобразить строку в нескольких строках, укажите в параметрах NSStringDrawingUsesLineFragmentOrigin.