我有一个特定CGSize
的 a UILabel
,我无法扩展的框架,UILabel
因为它是一个多行UILabels
adjustsFontSizeToFitWidth
方法不起作用。
所以我想我应该创建这样的函数,看起来像;
- (CGFloat)fontSizeWithText:(NSString*)text andFont:(UIFont*)font constrainedSize:(CGSize)size LBM:(UILineBreakMode)LBM
{
// check if text fits to label
CGSize labelSize = [text sizeWithFont:font constrainedToSize:CGSizeMake(size.width, 9999) lineBreakMode:LBM];
// if not, decrease font size until it fits to the given size
while (labelSize.height > size.height) {
font = [UIFont fontWithName:font.fontName size:font.pointSize - 0.5];
labelSize = [text sizeWithFont:font constrainedToSize:CGSizeMake(size.width, 9999) lineBreakMode:LBM];
}
return font.pointSize;
}
用法:
// fit detail label by arranging font's size
CGFloat fontSize = [self fontSizeWithText:self.titleLabel.text andFont:self.titleLabel.font constrainedSize:self.titleLabel.frame.size LBM:self.titleLabel.lineBreakMode];
self.titleLabel.font = [UIFont fontWithName:self.titleLabel.font.fontName size:fontSize];
但是使用这种方法,我发现我的一些文本不适合 UILabel 的框架并被截断。一定有什么我错过了。对代码的任何帮助或解决“将具有给定字体的文本拟合到特定的多行 UILabel”的任何其他建议都会很棒。