1

修正方法がわからないというエラーが表示されます。エラーは次のとおりです。

Sending 'CGFloat' (aka 'float') to parameter of incompatible type 'CGFloat *' (aka 'float *'); 

行の場合:

[xlabel.text drawAtPoint:CGPointMake(labelRect.origin.x, labelRect.origin.y) 
                forWidth:labelRect.size.width 
                withFont:myFont 
             minFontSize:5.0 
          actualFontSize:myFont.pointSize 
           lineBreakMode:UILineBreakModeWordWrap 
      baselineAdjustment:UIBaselineAdjustmentAlignCenters];

エラーは を指していactualFontSize:myFont.pointSizeます。myFontですUIFont。私はそれを次のように設定しました:UIFont *myFont = [UIFont systemFontOfSize:17.0];

そのエラーは何を意味し、それを修正する方法についてのアイデアはありますか?

4

2 に答える 2

7

ドキュメントから:

actualFontSize 入力では、浮動小数点値へのポインター。返されると、この値には文字列のレンダリングに使用された実際のフォント サイズが含まれます。

つまり、変数を参照してポインターを渡す必要があります。これを行うには、アンパサンド演算子を使用します&

例:

CGFloat outSize = 0;
[xlabel.text drawAtPoint:CGPointMake(labelRect.origin.x, labelRect.origin.y) 
                forWidth:labelRect.size.width 
                withFont:myFont 
             minFontSize:5.0 
          actualFontSize:&outSize 
           lineBreakMode:UILineBreakModeWordWrap 
      baselineAdjustment:UIBaselineAdjustmentAlignCenters];
NSLog(@"%f", outSize);

drawAtPoint: outSize が指す値を設定するので、結果を出力できます。ここでの理由は、return ステートメントを介して C で 1 つの値しか返すことができないためです。複数の結果を取得するには、ポインターを渡して、メソッドが追加の結果を設定できるようにします。

于 2012-06-19T21:55:57.257 に答える
3

このactualFontSizeパラメーターは、渡す CGFloat のアドレスであると想定されています。メソッドが別のフォント サイズを使用する場合、渡す値が変更されるため、値の代わりにアドレスを渡す必要があります。actualFontSizeつまり、メソッドが必要に応じて更新できるように、参照渡しを行っています。

于 2012-06-19T21:56:16.857 に答える