iPad / iPhone - NSString drawInRect не перенос слов - PullRequest
5 голосов
/ 12 октября 2010

Я использую следующее для рендеринга некоторого текста в UIView.

- (void) drawRect:(CGRect)rect
{

    NSString* text = @"asdf asdf asdf asdf asdf asdf asdf";

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);

    CGContextFillRect(context, rect);

    CGContextSetTextDrawingMode(context, kCGTextFillStrokeClip);

    CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]);

    CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);

    CGContextSetShouldSmoothFonts(context, YES);

    UIFont* font = [UIFont fontWithName:@"ArialRoundedMTBold" size:20.0f]; 

    CGSize textMaxSize = CGSizeMake(rect.size.width - 20.0f, rect.size.height);

    CGSize textSize = [text sizeWithFont:font constrainedToSize:textMaxSize lineBreakMode:UILineBreakModeWordWrap];

    CGRect textRect = CGRectMake(10.0f, 10.0f, textSize.width, textSize.height);

    [text drawInRect:textRect withFont:font];

    [text drawInRect:textRect withFont:font lineBreakMode:UILineBreakModeWordWrap]; 

    [text drawInRect:textRect withFont:font lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentCenter];
}

Ни один из [text drawInRect] не обернул текст так, как я ожидал. TextSize вычисляется правильно, но при рисовании отображается только одна линия.

Обновление:

решаемая.

Настройки CGContextSetTextDrawingMode(context, kCGTextFillStrokeClip); заставят текст обрезаться независимо от выбранного режима UILineBreak. Установка CGContextSetTextDrawingMode(context, kCGTextFillStroke); решила эту проблему.

Ответы [ 2 ]

0 голосов
/ 04 октября 2012

Решено.

Настройки CGContextSetTextDrawingMode (context, kCGTextFillStrokeClip);заставит текст обрезаться независимо от выбранного режима UILineBreak.Установка CGContextSetTextDrawingMode (context, kCGTextFillStroke);решил эту проблему.

0 голосов
/ 12 октября 2010

Возможно, у вас нет вертикального размера в вашем textRect.Проверьте этот похожий вопрос:

Как мне заставить - [NSString sizeWithFont: forWidth: lineBreakMode:] работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...