Objective c 在IOS中使用CG旋转后的文本中心
我必须旋转一个在圆圈内的文本,但我不能使它在弧画的中心。我成功地使用CGAffineTranform旋转,但文本始终不是径向中心。注:文字位于弧内Objective c 在IOS中使用CG旋转后的文本中心,objective-c,ios,cgcontext,cgaffinetransform,Objective C,Ios,Cgcontext,Cgaffinetransform,我必须旋转一个在圆圈内的文本,但我不能使它在弧画的中心。我成功地使用CGAffineTranform旋转,但文本始终不是径向中心。注:文字位于弧内 float l_angleText=lStartAngle+((lStopAngle-lStartAngle)/2); CGContextSelectFont(p_contex, "Helvetica", 12.5, kCGEncodingMacRoman); CGAffineTransform myTransform=CGAffi
float l_angleText=lStartAngle+((lStopAngle-lStartAngle)/2);
CGContextSelectFont(p_contex, "Helvetica", 12.5, kCGEncodingMacRoman);
CGAffineTransform myTransform=CGAffineTransformRotate(CGAffineTransformMakeScale(1,-1),-l_angleText);
CGContextSetTextMatrix(p_contex, myTransform);
CGContextSetTextDrawingMode(p_contex, kCGTextFill);
CGContextSetRGBFillColor(p_contex, 1.0, 1.0, 1.0, 1.0); //White
// get x/y for an the angle. The point in which I start drawing the text.
CGPoint lPoints = angleRToPoint(-l_angleText,[self getRadioPoint:l_angleText]);
//Move the point according the coords.
const double l_pointX = mReference.x+lPoints.x;
const double l_pointY = mReference.y-lPoints.y;
NSString* lText= [self getText];
CGContextShowTextAtPoint(p_contex, l_pointX, l_pointY, [lText UTF8String] , strlen([lText UTF8String]));
一,;我刚刚用象限法解决了这个问题,用正弦波和余弦修正了偏移量。该解决方案提供了良好的体验
-(CGPoint) getShiftToCenter:(const float) angle
{
CGPoint lRet;
unsigned int x = getCuadrante(angle);
float rx,ry;
switch (x) {
case 1:
rx=-sin(angle);
ry=cos(angle);
break;
case 2:
rx=cos(angle);
ry=-cos(angle);
break;
case 3:
rx=sin(angle);
ry=-cos(angle);
break;
case 4:
rx=-sin(angle);
ry=cos(angle);
break;
default:
break;
}
const float lFactor=4; // this is according to size of the font use it
lRet.x=lFactor*rx;
lRet.y=lFactor*ry;
NSLog(@"Cuad %d , An %f ; x=%f - y=%f", x, angle, lRet.x,lRet.y);
return lRet;
}