2013-01-10 66 views
3

我試圖設置行距爲NSAttributedString。問題是我無法爲文本設置一個小行間距。我可以爲25個或更多的領先者設置巨大的值,但小值會被忽略。我試圖設置kCTParagraphStyleSpecifierMinimumLineHeightkCTParagraphStyleSpecifierMinimumLineSpacing,但它不起作用。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; 

回答

1

您還需要設置最大行間距。

+0

爲什麼?如果我想要做的是縮小行間的大小。 – jberlana

+1

是的,你在想它是錯的。 CoreText確定行高,然後將其與最小值和最大值進行比較。你會用最小*增加*行間距和最大*減少*它。 – Cocoanetics

+0

哦,非常感謝!這是問題所在,感謝解決方案和解釋。 – jberlana