2011-06-16 77 views
1

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

+2

是的,你需要调整你的代码。 – PengOne 2011-06-16 17:23:27

回答

2

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

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

+1

从Windows更改为Mac时很难适应,现在我必须回去! (疯狂地尖叫) – 2011-06-16 17:29:42

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)); 
    } 
} 

精灵仅仅是一个的CALayer类的添加CGPoint财产,actualPosition。更新该值以移动精灵。

+0

'-layoutSublayers'被非常频繁地调用。当然,第二次被调用时,你会将每一层的y位置再次翻回原来的位置? – 2012-05-13 21:35:39

+0

糟糕,我在复制代码时犯了一个错误。我正在将这些问题的其他部分放在一边,因为它们与问题无关。我想我有点儿超前了。更新。 – charliehorse55 2012-05-13 22:07:30