我需要用一些文字填写一个矩形。 rect的大小是固定的。
我使用以下功能:
- (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)];
我得到了剪切的文字。我的错误在哪里?
答案 0 :(得分:2)
正如Gargolev所说,它将调整为适合宽度仅。
因此,您应该选择正确的fontSize以适合您提供的高度。
要在没有事先了解您将要使用的字体的情况下在运行时执行此操作,一个简单的解决方案将是:
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];
答案 1 :(得分:0)
我认为主要的问题是某些文字只适合宽度,但它必须适合宽度和高度。 所以对我来说最快的解决方案是制作一个更大的透明UILabel并使用alignment
将文本放入其中