我想用 numberOfLines>1 自动调整 UILabel 的文本大小。UILabel 的宽度和高度必须是固定的。有没有更好的解决方案,而不是手动计算字符和设置大小?我正在使用iOS6。
问问题
3315 次
2 回答
4
我修改了我找到的解决方案。现在可以在 UITableViewCell 中使用它:
- (void)resizeFontForLabel:(UILabel*)aLabel maxSize:(int)maxSize minSize:(int)minSize lblWidth: (float)lblWidth lblHeight: (float)lblHeight {
// use font from provided label so we don't lose color, style, etc
UIFont *font = aLabel.font;
// start with maxSize and keep reducing until it doesn't clip
for(int i = maxSize; i >= minSize; i--) {
font = [font fontWithSize:i];
CGSize constraintSize = CGSizeMake(lblWidth, MAXFLOAT);
// NSString* string = [aLabel.text stringByAppendingString:@"..."];
CGSize labelSize = [aLabel.text sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:aLabel.lineBreakMode];
if(labelSize.height <= lblHeight)
break;
}
// Set the UILabel's font to the newly adjusted font.
aLabel.font = font;
}
于 2013-01-25T16:22:06.833 回答
0
下面的代码行将为您提供字符串的完整大小:
CGSize labelSize = [labelString sizeWithFont:label.font constrainedToSize:label.contentSize];
于 2013-01-19T05:02:59.090 回答