ios视图坐标系

时间:2011-06-16 17:21:42

标签: iphone cocoa-touch cocoa core-graphics

我刚刚开始iOS绘图编程,我发现坐标系与Mac OS X不同,基本上iOS上的原点位于Mac的左上角而不是左下角。只是想知道是否有人知道为什么苹果公司做出了这一改变,它是否会改变Mac的未来?我还在文档上看到iOS上的坐标系不能翻转,所以我需要重写代码吗?

2 个答案:

答案 0 :(得分:2)

你对坐标系是正确的。如果我没记错的话,原因是大多数平台的绘图系统使用左上角作为坐标原点。 Mac OS X使用左下角,因为这是NeXT使用的。

将来Mac上可能不会改变,因为那时每个人都必须完全重写他们的绘图代码。

答案 1 :(得分:1)

我找到了解决这个问题的简单方法。不要使用标准CALayer对象作为基础层,而是创建一个只有一个调用的自己的类(基于CALayer):

- (void)layoutSublayers;
{
    for(sprite* aSprite in self.sublayers)
    {
        // -(y pos -1) flips the coordinate system to start in the lower left
        aSprite.position = CGPointMake(aSprite.actualPosition.x, -(aSprite.actualPosition.y - 1.0));
    }
}

sprite只是一个CALayer类,添加了CGPoint属性actualPosition。更新该值以移动精灵。