3
我試圖設置行距爲NSAttributedString
。問題是我無法爲文本設置一個小行間距。我可以爲25個或更多的領先者設置巨大的值,但小值會被忽略。我試圖設置kCTParagraphStyleSpecifierMinimumLineHeight
或kCTParagraphStyleSpecifierMinimumLineSpacing
,但它不起作用。CTParagraphStyleSetting + CoreText:設置行距
這是我的代碼,任何幫助表示讚賞。
CGFloat leading = 50.0;
CGFloat minMineHeight = 1;
CTTextAlignment alignment = kCTCenterTextAlignment;
const CTParagraphStyleSetting styleSettings[] = {
{kCTParagraphStyleSpecifierMinimumLineSpacing, sizeof(CGFloat), &minMineHeight},
{kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(CGFloat), &minMineHeight},
{kCTParagraphStyleSpecifierLineSpacing, sizeof(CGFloat), &leading},
{kCTParagraphStyleSpecifierParagraphSpacing, sizeof(CGFloat), &leading},
{kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &alignment}
};
CTParagraphStyleRef style = CTParagraphStyleCreate((const CTParagraphStyleSetting*) &styleSettings, 5);
[mutableAttributedString addAttribute:(NSString*)kCTParagraphStyleAttributeName value:(__bridge id)style range:NSMakeRange(0, [mutableAttributedString length])];
CFRelease(style);
return mutableAttributedString;
爲什麼?如果我想要做的是縮小行間的大小。 – jberlana
是的,你在想它是錯的。 CoreText確定行高,然後將其與最小值和最大值進行比較。你會用最小*增加*行間距和最大*減少*它。 – Cocoanetics
哦,非常感謝!這是問題所在,感謝解決方案和解釋。 – jberlana