2011-03-30 53 views
6

我有一個CGRect;我可以將其座標轉移到用戶座標系中,即左下角到頂部,而不是左上角到底部。有沒有任何預定義的方法,或者我需要手動計算它?提前致謝。更改用戶座標系統的正確值

+0

答案取決於你的那個轉換的CGRect使用。你打算如何處理轉換後的矩形? – Anurag 2011-03-30 06:17:22

+0

我在默認座標系(用戶)中有一個直線矩形值,現在我想要在iphone使用座標系中的座標。 – ajay 2011-03-30 06:25:55

+0

因此,您在座標系中有一個矩形,其原點位於左下角,並且您想將其轉換爲iOS座標系?你能發表一個你在默認座標系下的矩形的例子嗎? – Anurag 2011-03-30 06:28:27

回答

12

要將原點位於左下角(讓我們稱之爲傳統座標系給出名稱)的座標系轉換爲原點位於左上角(iPhone座標系)的系統需要知道CGRect所在視圖的大小,因爲視圖是矩形的參考。

例如,假設您有一個尺寸爲200 x 300的視圖,並且CGRectCGRectMake(10, 20, 30, 40)CGRect的大小將保持不變。所有將改變的都是原點 - 實際上,只有y座標將會改變,而不是x座標,因爲傳統的和iPhone的座標系統都從左側開始(左下角一個,左上角一個)。

所以我們會有類似CGRectMake(10, y, 30, 40)的東西。

- (CGRect)rectangle:(CGRect)oldRect fromTraditionalToiPhoneCoordinatesWithReferenceViewOfSize:(CGSize)aSize 
    { 
     CGFloat oldY = oldRect.origin.y; // This is the old y measured from the bottom left. 
     CGFloat newY = aSize.height - oldY - oldRect.size.height; 

     CGRect newRect = oldRect; 
     newRect.origin.y = newY; 

     return newRect; 
    } 

新的矩形,作爲從iPhone(左上)的座標系統測量,將是:CGRectMake(10, 300 - 20 - 40, 30, 40) = CGRectMake(10, 240, 30, 40)

希望這使得圖像更清晰 Hopefully this image makes it clearer

+0

+1非常感謝您的回答,它的確非常好... – ajay 2011-03-30 08:43:19