IOS.Метод AdjusttsFontSizeToFitWidth не работает должным образом - PullRequest
0 голосов
/ 03 ноября 2011

Мне нужно заполнить прямоугольник текстом.Размер прямоугольника фиксирован.

Я использую следующую функцию:

- (void)drawText:(NSString *)text onView:(UIView *)view inRect:(CGRect)rect
{
    UILabel *lbl = [[UILabel alloc] initWithFrame:rect];
    lbl.minimumFontSize = 1;
    lbl.font = [UIFont systemFontOfSize:30];
    [lbl setText:text];
    lbl.adjustsFontSizeToFitWidth = YES;
    [view addSubview:lbl];
    [lbl release];
}

Затем я пишу что-то похожее на это:

[self drawText:@"Asdfghjkl;" onView:view inRect:CGRectMake(45, 40, 85, 13)];
[self drawText:@"qwertyui" onView:view inRect:CGRectMake(173, 31, 126, 22)];

И я получаю вырезанныйтекст.Где моя ошибка?

Ответы [ 2 ]

2 голосов
/ 24 октября 2014

Как сказал Гарголев, он будет соответствовать ширине .

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

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

UILabel *label = [[UILabel alloc] initWithFrame:myView.bounds];
label.font = [UIFont fontWithName:@"Helvetica" size:1.f];
float fontAspectFactor = 1.f/label.font.lineHeight;
label.font = [UIFont fontWithName:@"Helvetica" size:myView.height*fontAspectFactor];
[myView addSubview:label];
0 голосов
/ 24 ноября 2011

Я думаю, что главная проблема в том, что какой-то текст соответствует только ширине, но должен соответствовать ширине и высоте.Поэтому самое быстрое решение для меня - сделать большую прозрачную UILabel и поместить в нее текст с помощью выравнивания

...