Как я могу нарисовать несколько строк текста с drawAtPoint? - PullRequest
3 голосов
/ 27 июня 2011

Я специально рисую какой-нибудь текст:

point = CGPointMake(77, 5);
    [[message valueForKey:@"user_login"] drawAtPoint:point forWidth:200 
                                            withFont:mainFont 
                                         minFontSize:MIN_MAIN_FONT_SIZE 
                                      actualFontSize:NULL 
                                       lineBreakMode:UILineBreakModeTailTruncation 
                                  baselineAdjustment:UIBaselineAdjustmentAlignBaselines];

Как мне заставить его рисовать 5 линий?Эквивалентно:

rect = CGRectMake(77, 25, 238, 68);
bodyLabel = [[UILabel alloc] initWithFrame:rect];
bodyLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:12];
bodyLabel.numberOfLines = 5;
bodyLabel.lineBreakMode = UILineBreakModeWordWrap;
    bodyLabel.textColor = [UIColor blackColor];
    [self.contentView addSubview: bodyLabel];

Ответы [ 2 ]

7 голосов
/ 27 июня 2011

Документация для -drawAtPoint:withFont:... гласит: «Этот метод не выполняет перенос строк во время рисования». Если вы используете -drawInRect:withFont: вместо -drawAtPoint:withFont:..., он будет рисовать несколько линий. Вы также можете использовать -sizeWithFont:constrainedToSize:, чтобы выяснить, какой размер будет.

0 голосов
/ 03 декабря 2016

Вместо устаревшего drawInRect:withFont:... в iOS7 + вы должны использовать drawWithRect:options:attributes:context:

[string drawWithRect:CGRectMake(x, y, width, height)
             options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine
          attributes:@{NSFontAttributeName:<font>, NSForegroundColorAttributeName:<color>
             context:nil];
...