我刚刚开始iOS绘图编程,发现坐标系与Mac OS X不同,基本上iOS上的原点位于左上角而不是左下角苹果电脑。只是想知道是否有人知道苹果为什么会做出这样的改变,并且它会改变Mac的未来吗?我还在文档中看到iOS上的坐标系不能翻转,所以我需要重写代码?ios视图坐标系
ios视图坐标系
回答
您对坐标系是否正确。如果我没有记错,原因是大多数平台的绘图系统使用左上角作为坐标原点。 Mac OS X使用较低的左侧,因为这是NeXT使用的。
它可能在未来的Mac上不会改变,因为那样每个人都必须完全重写他们的绘图代码。
从Windows更改为Mac时很难适应,现在我必须回去! (疯狂地尖叫) – 2011-06-16 17:29:42
我发现了一个简单的方法来解决这个问题。而是采用了标准的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。更新该值以移动精灵。
'-layoutSublayers'被非常频繁地调用。当然,第二次被调用时,你会将每一层的y位置再次翻回原来的位置? – 2012-05-13 21:35:39
糟糕,我在复制代码时犯了一个错误。我正在将这些问题的其他部分放在一边,因为它们与问题无关。我想我有点儿超前了。更新。 – charliehorse55 2012-05-13 22:07:30
是的,你需要调整你的代码。 – PengOne 2011-06-16 17:23:27