#ios #swift #calayer #catextlayer
#iOS #быстрый #calayer #catextlayer
Вопрос:
Я пытаюсь создать CATextLayer с рамкой, размер которой равен 3 строкам текста интервал между этим текстом. Я знаю, что мой размер шрифта равен 12.
Следовательно, высота фрейма должна быть 12*3 2* Размер пробела.
Мне нужно число, равное spaceSize, но я нигде не могу его найти.
Шрифт, который я использую, называется Helvetica, если это поможет.
Комментарии:
1. Почему бы не использовать API для вычисления рамки, необходимой для размещения текста для данного шрифта?
NSAttributedText boundingRect
даст вам размер. Обязательно укажите соответствующие атрибуты, такие как шрифт и стиль абзаца (если не по умолчанию).2. @rmaddy Я хочу установить максимальную ширину и некоторые другие параметры. Это игрушечный пример.
3. Ваш комментарий не меняет мой.
Ответ №1:
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString( (CFMutableAttributedStringRef) textLayer.string);
CGSize suggestedSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0, 0), NULL, CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX), NULL);
CFRelease(framesetter);
CGFloat layerHeight = ceil(suggestedSize.height);
spaceSize = (layerHeight - 36) / 2.0;