我的用户套件是一个iphone应用程序,我在图像的缩放,旋转和平移上做动画。如何在翻转的Y轴角度处理翻译矩阵
所以,我Concat的一切,将其提供给变换属性,但有一个问题:
由于我的图片大小不等,这对他们正确定位的问题。我习惯了一个倒y轴坐标系,所以我想让我的图像精确地定位在y轴上的60个像素处。
那么,如何从原始笛卡儿y轴改变为y轴的反转角?
我的用户套件是一个iphone应用程序,我在图像的缩放,旋转和平移上做动画。如何在翻转的Y轴角度处理翻译矩阵
所以,我Concat的一切,将其提供给变换属性,但有一个问题:
由于我的图片大小不等,这对他们正确定位的问题。我习惯了一个倒y轴坐标系,所以我想让我的图像精确地定位在y轴上的60个像素处。
那么,如何从原始笛卡儿y轴改变为y轴的反转角?
由于SMACL指出,要做到这一点最简单的方法是通过在视图的起源中使用(screenheight - viewheight - y)而不是y,将您的原点移至屏幕的左下角。
但是,您可以使用CATransform3D翻转主视图图层的坐标系。我这样做是为了我可以在我的iPhone应用程序和Mac客户端之间共享相同的Core Animation CALayer布局代码(iPhone将CALayers的正常Quartz坐标系反转为与UIViews相匹配)。所有你需要做的,使这是将线
self.layer.sublayerTransform = CATransform3DMakeScale(1.0f, -1.0f, 1.0f);
为您层托管的UIView你的初始化代码。请记住,这将翻转你的CALayers,所以在这些层的任何UIKit的文本渲染可能还需要使用类似于下面的代码翻转:
CGContextSaveGState(context);
CGContextTranslateCTM(context, 0.0f, self.frame.size.height);
CGContextScaleCTM(context, 1.0f, -1.0f);
UIFont *theFont = [UIFont fontWithName:@"Helvetica" size:fontSize];
[text drawAtPoint:CGPointZero withFont:theFont];
CGContextRestoreGState(context);
你可以做一个类似的排序使用CGAffineTransform反转的,但你还需要申请翻译,使这项工作:
CGAffineTransform flipTransform = CGAffineTransformMakeTranslation(0.0f, self.frame.size.height);
flipTransform = CGAffineTransformScale(flipTransform, 1.0f, -1.0f);
您可以使用仿射变换来转换坐标原点使用CGPointApplyAffineTransform()。
对于每个Y坐标,Y =顶部,y,其中最高的是你在绘制边框的顶部y坐标。