2012-06-19 3 views
0

해결 방법을 모르겠다는 오류가 나타납니다. 오류 : 라인CGFloat 또는 CGFloat *?

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에 오류를 가리 킵니다. myFontUIFont입니다. 나는 이렇게 설정했다 : UIFont *myFont = [UIFont systemFontOfSize:17.0];

무엇을 의미 하는가? 그리고 그것을 고치는 방법에 대한 아이디어는 무엇인가? docs 가입일

답변

5

: 입력에

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 : 이렇게하려면 당신은 앰퍼샌드 운영자에게 &

예를 사용하여 소형에 점은 그래서 당신은 결과를 인쇄 할 수 있습니다 값을 설정합니다. 이유는 return 문을 통해 C에서 1 개의 값만 반환 할 수 있기 때문입니다. 여러 결과를 얻으려면 포인터를 전달하여 메서드에서 추가 결과를 설정할 수 있도록합니다.

3

매개 변수는 전달하는 CGFloat의 주소로 사용됩니다.이 메서드에서 다른 글꼴 크기를 사용하면 전달 된 값이 변경되므로 주소를 전달해야합니다 값 대신에. 즉, 참조로 actualFontSize을 전달하므로 메서드에서 필요에 따라 업데이트 할 수 있습니다.