更改iOS中的坐标方向

时间:2012-09-19 19:49:07

标签: objective-c ios xcode

我的GLKViewController子类中有一些代码如下所示:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch * touch = [touches anyObject];
    CGPoint point = [touch locationInView:self.view];
    NSLog(@"touch has begun!: %f %f",point.x,point.y);
    float xw = [self.view bounds].size.width;
    float yw = [self.view bounds].size.height;
    NSLog(@"touch -- %f %f", point.x / xw, point.y / yw);
}

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return UIInterfaceOrientationLandscapeRight == toInterfaceOrientation;
}

此外,我在“iPhone / iPod部署信息”中将我唯一支持的设备方向设置为“右侧风景”。

通过运行上面的代码进行测试,看起来好像左上角是(0,0)。但是,我有另一个类似于这个的测试项目,其中(0,0)点位于左下角。

究竟是什么决定了坐标系的方向?如果我希望我的(0,0)点位于左下角而不是左上角,我该怎么做?

1 个答案:

答案 0 :(得分:2)

在iOS上,(0,0)处的角落 - 称为原点 - 应始终位于左上角。我不知道有一种方便的方法来改变它,除了可能是UIView的子类并处理所有各种算术 - 计算你的边界/框架,布置你的子视图,并自己绘制你的内容。

在Mac上,原点略有不同:默认情况下位于左下角。但是,您可以继承NSView并从YES方法返回-isFlipped,以指示您希望坐标的行为类似于iOS的视图层次结构,原点位于左上角。

我不知道你有什么简单的方法可以在iOS的左下方意外地看到原点。如果您从其他测试项目发布一些代码,我可以扩展此答案来解决它。