2012-09-19 73 views
2

我有一些代碼,看起來像這樣在我GLKViewController子類:改變座標方位的iOS

-(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)點成爲左下角而不是左上角,那麼我該怎麼做?

回答

2

在iOS上,位於(0,0)處的角落 - 名爲的原點 - 應始終位於左上角。我不知道有一種方便的方法來改變它,除了可能的子類UIView和處理所有的各種算術 - 計算你的邊界/框架,佈局你的子視圖,並繪製你的內容 - 你自己。

在Mac上,原點稍有不同:默認情況下是左下角。但是,您可以繼承NSView並從-isFlipped方法返回YES,以向視圖層次結構指示您期望您的座標行爲與iOS類似,並且原點位於左上角。

我不知道任何簡單的方法,你可能會意外地看到在iOS左下角的原點。如果你從其他測試項目發佈了一些代碼,我可以擴展這個答案來解決它。

+0

我可能會誤解另一個項目。我只是害怕我可能無意中做了一些事情,而當我處於這個過程中時,方向可能會翻轉。保證它總是在左上角對我來說足夠好。 – math4tots