CATextLayer обернутый размер ToFit? - PullRequest
8 голосов
/ 22 ноября 2011

Если я установлю textLayer.wrapped = YES, как мне изменить размер textLayer, чтобы он содержал обернутый текст?Т.е. как мне получить новую высоту textLayer?

В принципе, я хочу что-то вроде -[UILabel sizeToFit].

1 Ответ

2 голосов
/ 30 января 2012

Первое, что вам нужно сделать, это получить размер текста.

К счастью, справочник по NSString UIKit предлагает метод, который делает именно это:

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode

Это даст вам CGSize, который вы затем сможете использовать для установки кадра вашего UILabel или любого другого подкласса UIView, который вы используете.

Итак, предполагая, что textLayer - это UILabel, а не CALayer, вы получите что-то вроде этого:

UIFont *myFont = [UIFont boldSystemFontOfSize:12.0f];
CGSize myFontSize = [myString sizeWithFont:myFont];
myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, myFontSize.width, myFontSize.height)];
myLabel.text = newTitle;
myLabel.font = myFont;
...