#core-text #cgpathref
#основной текст #cgpathref
Вопрос:
У меня есть приписываемая строка с несколькими словами. Я пытаюсь нарисовать его вдоль CGPathRef, используя основной текст на iOS7. Однако, даже когда я устанавливаю для CTLineBreakMode значение kCTLineBreakByWordWrapping, текст переносится не на слова, а на символы. Например, во всех красных, зеленых, синих и фиолетовых фрагментах пирога достаточно места для отображения строки с использованием переноса слов, но основной текст настаивает на переносе символов в этих случаях. Что я делаю не так?
UIFont *font = [UIFont boldSystemFontOfSize:10];
CGContextSetLineWidth(context, 1.0);
CGContextSetStrokeColorWithColor(context, [UIColor clearColor].CGColor);
CGMutablePathRef pathSmaller = CGPathCreateMutable();
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
CGPathMoveToPoint(pathSmaller, NULL, self.center.x, self.center.y);
CGPathAddArc(pathSmaller, NULL, self.center.x, self.center.y, radius - 5, (beginAngle - 90 - 1) * M_PI / 180, (endAngle - 90 - 1) * M_PI / 180, NO);
CGPathCloseSubpath(pathSmaller);
CGContextAddPath(context, pathSmaller);
CGContextFillPath(context);
CTLineBreakMode lineBreakMode = kCTLineBreakByWordWrapping;
CTParagraphStyleSetting settings[] = {
{ kCTParagraphStyleSpecifierLineBreakMode, sizeof(CTLineBreakMode), amp;lineBreakMode },
};
CTParagraphStyleRef pstyle = CTParagraphStyleCreate(settings, 1);
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:@"Mortgage Insurance"];
CFAttributedStringSetAttribute((CFMutableAttributedStringRef)attrString, CFRangeMake(0, [attrString length]), kCTParagraphStyleAttributeName, pstyle);
CFRelease(pstyle);
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attrString);
CTFrameRef theFrame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, [attrString length]), pathSmaller, NULL);
CFRelease(framesetter);
CTFrameDraw(theFrame, context);
CFRelease(theFrame);