Многострочный текст (перенос слов) с drawAtPoint? - PullRequest
3 голосов
/ 16 августа 2011

Есть ли способ нарисовать многострочный текст с drawAtPoint? Я пытался UILineBreakModeWordWrap, но, похоже, не работает?

Как бы вы преобразовали этот код в рабочий многострочный текст ??

point = CGPointMake(boundsX, 50);
[self.heading drawAtPoint:point forWidth:labelWidth withFont:mainFont minFontSize:12.0 actualFontSize:NULL lineBreakMode:UILineBreakModeWordWrap baselineAdjustment:UIBaselineAdjustmentAlignBaselines];

Спасибо!

Ответы [ 3 ]

10 голосов
/ 16 августа 2011

drawAtPoint: не поддерживает многострочный текст.Вместо этого вы можете использовать метод drawInRect:.

Редактировать: (Копирование комментария @George Asda ниже)

[self.heading drawInRect:(contentRect) withFont:mainFont    
        lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentCenter];
1 голос
/ 17 ноября 2015
[_text drawWithRect:_textRect options:**NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine** attributes:attributes context:nil];
0 голосов
/ 16 августа 2011

Это невозможно сделать с помощью метода NSString drawAtPoint.Из документации:

Рисует строку в одной строке в указанной точке в текущем графическом контексте, используя указанный шрифт и атрибуты.

Не могли бы вы, возможно, использовать простое UILabel?

РЕДАКТИРОВАТЬ

Вы можете рассчитать высоту UILabel следующим образом:

//Calculate the expected size based on the font and linebreak mode of your label
CGSize maximumLabelSize = CGSizeMake(296,9999);

CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font 
                    constrainedToSize:maximumLabelSize 
                    lineBreakMode:yourLabel.lineBreakMode]; 

//adjust the label the the new height.
CGRect newFrame = yourLabel.frame;
newFrame.size.height = expectedLabelSize.height;
yourLabel.frame = newFrame;
...