ラベル プロパティを設定してみます
@property(nonatomic) BOOL adjustsFontSizeToFitWidth
YES にして、問題が解決するかどうかを確認します。そうでない場合はお知らせください。別の状況で問題が発生しましたが、コードを使用してサイズを手動で変更することになりました。
これは、フォントサイズを手動で変更するために使用したコードです。あなたの問題が何であるかはわかりませんが、これは私の問題の良い解決策になりました. ラベルのテキストを設定するときにこのメソッドを呼び出すだけで、フォント サイズを自分で設定できます。
- (CGFloat)requiredFontSizeForLabel:(UILabel *)label
{
if (!label) {
return kFontSize;
}
CGFloat originalFontSize = kFontSize;
UIFont* font = label.font;
CGFloat fontSize = originalFontSize;
BOOL found = NO;
do
{
if( font.pointSize != fontSize )
{
font = [font fontWithSize: fontSize];
}
if([self wouldThisFont:font workForThisLabel:label])
{
found = YES;
break;
}
fontSize -= 0.5;
if( fontSize < (label.minimumScaleFactor * label.font.pointSize))
{
break;
}
} while( TRUE );
return( fontSize );
}
- (BOOL) wouldThisFont:(UIFont *)testFont workForThisLabel:(UILabel *)testLabel {
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:testFont, NSFontAttributeName, nil];
NSAttributedString *as = [[NSAttributedString alloc] initWithString:testLabel.text attributes:attributes];
CGRect bounds = [as boundingRectWithSize:CGSizeMake(CGRectGetWidth(testLabel.frame), CGFLOAT_MAX) options:(NSStringDrawingUsesLineFragmentOrigin) context:nil];
BOOL itWorks = [self doesThisSize:bounds.size fitInThisSize:testLabel.bounds.size];
return itWorks;
}
- (BOOL)doesThisSize:(CGSize)aa fitInThisSize:(CGSize)bb
{
if ( aa.width > bb.width ) return NO;
if ( aa.height > bb.height ) return NO;
return YES;
}
コードのソースはこちら