のフレームを拡張できず、複数行のメソッドであるため、特定CGSize
の が機能しません。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に特定のフォントのテキストを合わせる」ことを解決するためのコードまたはその他の提案の助けは素晴らしいでしょう。