나는 사용자 정의 라인 간격 텍스트를 갖고 싶어, 그래서 CTParagraphStyleAttributte
와 속성 문자열을 쓴에 전달 내 CATextLayer
:CATextLayer + NSAttributtedString + CTParagraphStyleRef
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
과 kCTParagraphStyleSpecifierLineSpacing
으로 시도했지만 그 중 하나가 작동하지 않는 것 (?). 나는 또한 을 사용하여 정렬을 설정하려고 시도했다. (CATextLayer
은 그 속성을 가지고있다.) 단지 kCTParagraphStyleAttributeName
을 테스트하는 것은 실제로 효과가있다.
나 자신에게 물어볼 몇 가지 미친 값 (예 : CTParagraphStyleCreate(styleSettings, -555);
)을 전달하더라도 알 수 있습니다. CATextLayer
은 단락 속성을 지원합니까? 그렇다면, 내가 여기서 무엇을 놓치고 있습니까?
가) 인수 arg2는 실제로 CFIndex로 입력해야합니다. 하지만 이것은 확장을 위해 특별히 정의 된 정수형이기 때문에 실제로 문제가되는 것은 아닌지 의심 스럽습니다. B) 나는 paragraphStyle을 통해 탭 중지를 받기 위해 CATextLayer를 얻을 수 있었으므로 일부 속성을 지원해야합니다. 그러나 첫 번째 줄과 머리 들여 쓰기는 효과가 없었습니다. 적어도 iOS 4.3에는 없었습니다. (누군가가 답을 갖고 있기를 바랍니다. 왜냐하면 leading는 textLayer 기능에 중요해 보입니다.) – Wienke