私がドキュメントを間違って読んでいない限り、それはこの方法のようです sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
適切なCGSizeを返していません。これがサンプルコードです
NSString *someText = @"$";
CGFloat actualFontSize;
CGSize textSize = [someText sizeWithFont:[UIFont fontWithName:@"Futura-CondensedMedium" size:100.0] minFontSize:1.0 actualFontSize:&actualFontSize forWidth:10.0 lineBreakMode:UILineBreakModeClip];
の高さ textSize
返されるのは、フォントサイズが 100.0、新しい縮小フォントサイズではありません。
あなたがそれから取るならば actualFontSize
そして、やります sizeWithFont:forWidth:lineBreakMode:
:
CGSize newTextSize = [someText sizeWithFont:[UIFont fontWithName:@"Futura-CondensedMedium" size:actualFontSize] forWidth:10.0 lineBreakMode:UILineBreakModeClip];
今 newTextSize
正しい高さが含まれます。
他に誰かがこれに遭遇しましたか?
回答:
回答№1は1問題はあなたの幅です。最小フォントを1.0ピクセルに設定し、幅を10.0に設定しているため、textSizeは、自分で設定した10.0の幅に合わせて低いtextSizeに自動的に調整されます。
CGSize textSize = [someText
sizeWithFont:[UIFont fontWithName:@"Futura-CondensedMedium" size:100.0]
minFontSize:1.0 //the troublemaker
actualFontSize:&actualFontSize
forWidth:10.0 //the troublemaker
lineBreakMode:UILineBreakModeClip];
最小のtextFontを設定しておらず、幅を適切に設定しているため、投稿したもう1つは適切なサイズを返します。
CGSize newTextSize = [someText
sizeWithFont:[UIFont fontWithName:@"Futura-CondensedMedium"
size:actualFontSize]
forWidth:currencyRect.size.width //probably not 10 pixels wide
lineBreakMode:UILineBreakModeClip];