iOS: я не могу заставить основной текст использовать перенос слов. Где я ошибаюсь?

#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);