7

ポイント サイズ 17 のフォントの UILabel があります。label.font.pointSize を呼び出すと、17 になります。BBUUUUTTT また、最小フォント サイズを 8 に設定しています。ラベルにテキストを詰め込んでポイント サイズが縮小し、label.font.pointsize を呼び出すと、ポイント サイズが小さいことがわかっていても 17 になります。

システムがフォントのサイズを変更した後に実際のポイントサイズを取得する方法はありますか?

4

3 に答える 3

4

コンテンツを縮小しているときに UILabel の現在のポイント サイズを取得する API については知りません。sizeWithFontAPIを使用して「スケーリング係数」を近似することができます。

ただのアイデア:

// Get the size of the text with no scaling (one line)
CGSize sizeOneLine = [label.text sizeWithFont:label.font];

// Get the size of the text enforcing the scaling based on label width
CGSize sizeOneLineConstrained = [label.text sizeWithFont:label.font constrainedToSize:label.frame.size];

// Approximate scaling factor
CGFloat approxScaleFactor = sizeOneLineConstrained.width / sizeOneLine.width;

// Approximate new point size
CGFloat approxScaledPointSize = approxScaleFactor * label.font.pointSize;
于 2013-06-04T16:33:21.563 に答える