カスタムの行間でテキストを作成したいので、属性文字列を書き、CTParagraphStyleAttributte
それを my に渡しますCATextLayer
。
UIFont *font = [UIFont systemFontOfSize:20];
CTFontRef ctFont = CTFontCreateWithName((CFStringRef)font.fontName,
font.pointSize, NULL);
CGColorRef cgColor = [UIColor whiteColor].CGColor;
CGFloat leading = 25.0;
CTTextAlignment alignment = kCTRightTextAlignment; // just for test purposes
const CTParagraphStyleSetting styleSettings[] = {
{kCTParagraphStyleSpecifierLineSpacingAdjustment, sizeof(CGFloat), &leading},
{kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &alignment}
};
CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(styleSettings, 2));
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
(id)ctFont, (id)kCTFontAttributeName,
(id)cgColor, (id)kCTForegroundColorAttributeName,
(id)paragraphStyle, (id)kCTParagraphStyleAttributeName,
nil];
CFRelease(ctFont);
CFRelease(paragraphStyle);
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc]
initWithString:string
attributes:attributes];
_textLayer.string = attrStr;
[attrStr release];
しかし、行の高さは変わりません。ここで何かが欠けていると思いますが、何がわかりません。
kCTParagraphStyleSpecifierLineSpacingAdjustment
andを試してみましkCTParagraphStyleSpecifierLineSpacing
たが、どちらも機能しないようです(?)。テストするためだけにkCTParagraphStyleSpecifierAlignment
(そのためのプロパティがあることはわかっています)を使用してアライメントを設定しようとしましたが、実際には機能しませんでした。CATextLayer
kCTParagraphStyleAttributeName
CTParagraphStyleCreate(styleSettings, -555);
クレイジーな値 (例: ) を渡しても、次のように自問することに気付きました:CATextLayer
段落属性をサポートしていますか? もしそうなら、私はここで何が欠けていますか?