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

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

NSStringDrawingUsesLineFragmentOrigin

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

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

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

Ответ 1

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

Обсуждение

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

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

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

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