3

スコアキーピングアプリ(ホームアンドアウェイ)用に2つのUILabelがあります。ユーザーは[ホーム]または[退席中]をタップして、ラベルを好きなように変更できます。これはすべて正常に機能しています。ユーザーがラベルサイズよりも大きい名前を入力すると、フォントが収まるように縮小されます。これにより、2つのラベルのフォントサイズが一致しなくなり、正しく表示されなくなります。私の質問:あるラベルのフォントサイズを、「自動縮小」された別のラベルのサイズに設定するにはどうすればよいですか?

また、2つのラベルの間でどちらのフォントサイズが小さいかを判断し、両方をその数に設定するためのコードを作成する必要があることも認識しています。上記の質問に対する答えが得られれば、問題はないと思います。シンプルなはずなのに、今のところわかりません。

4

2 に答える 2

0

ですから、両方のラベルのフレームサイズを知っているといいのですが。

– sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:を使用して、使用する最小フォントサイズを見つけます。

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-08-24T04:00:59.233 に答える
0

私にとってこれはうまくいきました:

- (CGFloat)actualTitleFontSize
{
    NSStringDrawingContext *labelContext = [NSStringDrawingContext new];
    labelContext.minimumScaleFactor = 0.2;

    NSAttributedString *attributedString =
        [[NSAttributedString alloc] initWithString:label.text attributes:@{NSFontAttributeName : label.font}];
    [attributedString boundingRectWithSize:label.frame.size
                                   options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                   context:labelContext];

    CGFloat actualFontSize = label.font.pointSize * labelContext.actualScaleFactor;

    return actualFontSize;
}
于 2016-02-15T16:25:46.820 に答える