다음 코드를 사용하여 CoreText로 텍스트 단락을 포맷합니다.단락 CoreText로 자리 맞추기
(...)
CTFontRef fontRef = CTFontCreateWithName((CFStringRef)fontName,
[self.fontSize floatValue], NULL);
CTTextAlignment alignment = kCTJustifiedTextAlignment;
CTParagraphStyleSetting settings[]={
{kCTParagraphStyleSpecifierAlignment, sizeof(alignment), &alignment},
};
CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(settings,
sizeof(settings)/sizeof(settings[0]));
self.attrs = [NSDictionary dictionaryWithObjectsAndKeys:
//The following line doesn't work!
(id)paragraphStyle, kCTParagraphStyleAttributeName,
(id)self.color.CGColor, kCTForegroundColorAttributeName,
(id)fontRef, kCTFontAttributeName,
nil];
CFRelease(fontRef);
CFRelease(paragraphStyle);
NSMutableAttributedString* aString = [[[NSMutableAttributedString alloc] initWithString:@""] autorelease];
(...)
[aString appendAttributedString:[[[NSAttributedString alloc] initWithString:text attributes:attrs] autorelease]];
다음 속성 쌍 (값/키)을 제거하면 모든 것이 작동합니다 (색상, 글꼴 등). I는 attrs에 사전에이 특성을 넣으면
(id)paragraphStyle, (NSString*)kCTParagraphStyleAttributeName,
, 프로그램 난 CTFrameGetVisibleStringRange를 사용하여 무한 루프에 들어간다.
내가 뭘 잘못하고있어?
업데이트 : 코드가 문제가 아니라는 것을 알아 냈 마티아스 응답 후. 텍스트의 일부분 (쓰레기)에서 잃어버린 일부 HTML 태그가 있었고 어떤 이유로 FrameSetter가 손실되어 반환되고 빈 범위를 벗어났습니다. 텍스트에 HTML 태그가 없으면 모든 것이 잘되었습니다.
감사합니다. 코드를 볼 것입니다. 중단 점을 넣었으며 'CTParagraphStyleCreate'는 NULL이 아닌 값을 반환합니다. – javsmo
그 줄을 활성화하면'CTFrameGetVisibleStringRange'는'CTFrame : visible string range = (14058, 0)'를 반환합니다. 이것은 길이가 0 인 빈 범위입니다. 이것은 표시되는 열을 처리하기 위해 frame.length를 textPosition에 추가하기 때문에 무한 루프가 발생합니다. – javsmo
괜찮습니다. 당신은 당신의 본보기를 더 완전하게 만들 수 있습니까? –