Получить базовую позицию строки в ее ограничительной рамке
Я использую sizeWithAttributes
для того, чтобы получить width
а также height
требуется для того, чтобы нарисовать NSAttributedString
, Это хорошо работает, чтобы получить width
поскольку значение, возвращаемое для ширины, очень удобно соответствует символам - оно рассчитывается от первого символа до последнего без добавления дополнительного отступа. Но для height
, он возвращает значение больше, чем я хотел бы. Это потому, что он должен рассчитать height
начиная с верхней части самой высокой буквы и продолжая вниз до нижней части самого нижнего символа - например, символ g простирается ниже базовой линии.
Я не верю, что этот API "интеллектуален", потому что ни один из символов в моей строке не выходит за базовую линию, но возвращаемая высота слишком высокая. Кажется, он рассматривает любой возможный символ, который может отображаться с этими атрибутами.
Мне нужен способ вычесть количество "дополнительных отступов" ниже строки. Я хочу рассчитать, где базовая линия относительно height
или каким-либо другим способом вычислить, сколько места выделено для области под базовой линией. Иллюстрация ниже визуально объясняет, что, по моему мнению, происходит, хотя величина заполнения немного экстремальна.
-------------
--greetings--
<-get rid of this 'extra' padding
-------------
я верю boundingRectWithSize:options:context:
дал бы мне те же размеры, и я не знаю ни о каком другом (не устаревшем) API, который вычисляет размеры строк.
1 ответ
UIFont
имеет атрибуты ascender
(высота над базовой линией) и descender
(отрицательный, высота ниже базовой линии). Это, наверное, то, что вы ищете.