Смущен значением элемента NSStringDrawingOptions

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

NSStringDrawingUsesLineFragmentOrigin

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

Точно так же, как PDF-файл WWDC 2013 Session 220 (Расширенные макеты текста и эффекты с текстовым набором) на странице 95.

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


person yuyeqingshan    schedule 06.02.2015    source источник


Ответы (1)


Из официальной документации

Обсуждение

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

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

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

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

person Lefteris    schedule 06.02.2015