Iphone 上下文旋转
我有一个100x100像素的图像,我想画一个围绕图像中心旋转的不同角度的图像。下面的代码可以工作,但会围绕坐标系的原始原点(左上角)而不是平移位置旋转。因此,图像不会围绕自身旋转,而是围绕屏幕的左上角旋转 以下代码是在一个空白应用程序的自定义视图中运行的,除此之外没有其他内容Iphone 上下文旋转,iphone,cocoa-touch,ipad,uikit,core-graphics,Iphone,Cocoa Touch,Ipad,Uikit,Core Graphics,我有一个100x100像素的图像,我想画一个围绕图像中心旋转的不同角度的图像。下面的代码可以工作,但会围绕坐标系的原始原点(左上角)而不是平移位置旋转。因此,图像不会围绕自身旋转,而是围绕屏幕的左上角旋转 以下代码是在一个空白应用程序的自定义视图中运行的,除此之外没有其他内容 - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextTranslateCTM
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, -50, -50);
CGContextRotateCTM (context, 0.3);
CGContextTranslateCTM(context,768/2,1024/2);
[image drawAtPoint:CGPointMake(0,0)];
}
我试着用CGAffineTransform做同样的事情,但得到了同样的结果。旋转总是围绕原点;你需要做的不是打败它,而是利用它 这里要记住的关键是,翻译会移动原点。因此,如果您希望将图像居中于屏幕中心并围绕该中心旋转图像,您需要做的是:
您会注意到,注释最终会旋转并位于中心。不要硬编码屏幕尺寸。22年前Mac开发者发现了这一点,上周iPhone开发者又发现了这一点,屏幕的尺寸并不是永远不变的。帮自己一个大忙,问问屏幕有多大。准备好迎接iPad像素尺寸改变的那一天。我认为你所需要做的就是在旋转之前进行转换。第二个平移,移动到屏幕中心,将无法按预期工作,因为它将在旋转坐标中。屏幕尺寸仅硬编码,因为这是解决我的问题的简化示例。。。我的实际代码没有这样的假设:-)是的。。翻译,旋转,然后画图,除了图像将围绕其左上角旋转,而不是其中心。彼得,我在iPhone模拟器中做了一些测试,选择视网膜显示与正常显示不会改变硬编码矩形的屏幕位置。我做错什么了吗?