核心图形和UIKit轮换和翻译

时间:2016-08-13 23:55:56

标签: objective-c graphics uikit core-graphics

我的问题在于使用UIKit和CoreGraphic绘制,旋转,翻译我的上下文。

阅读 apple documentation 在Arcs和rotation的小节中,我知道

  • UIKit使用UpLeft坐标系
  • CoreGraphic使用DownLeft坐标系

和轮换

  • UIKit逆时针
  • 顺时针为CoreGraphic

在我的项目中,我已经覆盖了drawRect并通过UiBezierPath创建了一个rettangle。 后来,我想要对我的矩形进行转换和旋转,因此我调用了Core Graphic函数UIGraphicsGetCurrentContext();输入

self.situation=UIGraphicsGetCurrentContext();
CGContextTranslateCTM(self.situation,50,50);
CGContextRotateCTM(self.situation, RADIANS_FOR_DEGREE(90));`

转换将我的上下文从左到右和y从上到下转换为y(就好像坐标系在UpLeft角落,所以遵循UIKit规则) 并按顺时针方向旋转(如CoreGraphic规则)。

此外,如果我添加一个UISlider来制作用于旋转和转换的运行时动画,并使用Core Graphic函数创建这两个方法

-(void)rotateRectOfDegree:(float)degree{

    CGContextRef context=self.situation;
    CGContextRotateCTM(context, RADIANS_FOR_DEGREE(degree));

    [self setNeedsDisplay];
}

-(void)traslateRectOfPointOfY:(float)point{

    CGContextRef context=self.situation;
    CGContextTranslateCTM(context,self.bounds.origin.x,point);

    [self setNeedsDisplay];       
}

这次旋转是逆时针的正面度,与我在文档中看到的形成鲜明对比,而traslation遵循文档中的文档规则。

问题出在哪里?我的论点在哪里错了?

0 个答案:

没有答案