/ / sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:適切なCGSizeを返さない-iphone、objective-c、ios、ipad

sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:適切なCGSizeを返さない-iphone、objective-c、ios、ipad

私がドキュメントを間違って読んでいない限り、それはこの方法のようです 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];