2012-06-04 44 views
7

根據蘋果的文檔,iOS的功能說「CGRectMinY」這應該是左下角

CGRectMinY(的CGRect)RECT返回指定的矩形的右上角的y座標

它不應該是矩形的左下角嗎?因爲我認爲Y軸是向下的。

+0

我對這個令人困惑的文檔提出了一個雷達。如果你想看到它被修復請欺騙! http://openradar.appspot.com/radar?id=2876407 –

+1

我認爲這裏的教訓是不使用這個功能。 –

回答

14

如果這是iOS的我認爲你的功能是錯誤的。

http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGGeometry/Reference/reference.html

CGRectGetMinY

返回y座標,其建立一個 矩形的底部邊緣。

CGFloat CGRectGetMinY(CGRect rect);

參數

矩形指定的矩形的左下角的

The rectangle to examine. 

返回值

y座標。 可用性

Available in iOS 2.0 and later. 

相關示例代碼

HeadsUpUI 
oalTouch 
PhotoScroller 
QuartzDemo 
SpeakHere 

宣佈CGGeometry.h

編輯: 要清除confussion。 「CGRectGetMinY」是一個在CGRect上使用的函數,這意味着它將返回結果,就像它只考慮矩形一樣。例如:

// With a self created element 

CGRect rect = CGRectMake(0, 429, 100, 44); 

NSLog(@"rect.origin.y: %f",rect.origin.y); 
NSLog(@"rect.size.height: %f",rect.size.height); 
NSLog(@"CGRectGetMinY(rect): %f",CGRectGetMinY(rect)); 
NSLog(@"CGRectGetMaxY(rect): %f",CGRectGetMaxY(rect)); 

回報

2012-06-04 10:55:49.737 test[7613:707] rect.origin.y: 429.000000 
2012-06-04 10:55:49.739 test[7613:707] rect.size.height: 44.000000 
2012-06-04 10:55:49.741 test[7613:707] CGRectGetMinY(rect): 429.000000 
2012-06-04 10:55:49.748 test[7613:707] CGRectGetMaxY(rect): 473.000000 

的關鍵是要考慮這一點,如果你問分鐘,你會得到比你要求的最大的較低值。即使你在不使用ios座標系的情況下考慮這一點。

現在ios被翻轉了,所以你必須考慮這一點,前面的函數也會起作用,但從視覺上講,結果是倒轉的,因爲系統是反轉的。

// With an element on the screen 

NSLog(@"gpsButton.frame.origin.y: %f",gpsButton.frame.origin.y); 
NSLog(@"gpsButton.frame.size.height: %f",gpsButton.frame.size.height); 
NSLog(@"CGRectGetMinY(gpsButton.frame): %f",CGRectGetMinY(gpsButton.frame)); 
NSLog(@"CGRectGetMaxY(gpsButton.frame): %f",CGRectGetMaxY(gpsButton.frame)); 

回報

2012-06-04 10:55:49.725 test[7613:707] gpsButton.frame.origin.y: 429.000000 
2012-06-04 10:55:49.727 test[7613:707] gpsButton.frame.size.height: 44.000000 
2012-06-04 10:55:49.732 test[7613:707] CGRectGetMinY(gpsButton.frame): 429.000000 
2012-06-04 10:55:49.735 test[7613:707] CGRectGetMaxY(gpsButton.frame): 473.000000 

對於誰看到這樣的人,也有沒有錯,最小小於最​​大。

所以混淆是在ios倒置系統中,因爲你想從倒置系統中獲取視覺上較少的值。

這就是爲什麼它看起來很奇怪,CGGeometry中的描述是爲「人類世界」製作的。不適用於ios倒置系統。

+1

哇,現在我很困惑。看起來提問者錯誤地引用了文檔,但錯誤引用對我有意義。你的報價看起來很準確,但現在我和提問者有同樣的問題!爲什麼minY在CGRect座標系(如view.bounds)的左上角有一個原點時引用底部。 min更接近原點,對吧?原點位於右上角?不應該更接近頂部? – danh

+2

因爲這是一種方便人類的方法,所以即使當ios座標系倒退時,人類通常也希望該點更接近地面。而且由於這樣的事實,如果你想要最上面的那個,你只需要將frame/bounds.origin.y框架化,而不是在較低的那個框架上/ bounds.origin.y + frame/bounds.size。身高 – Pochi

+0

@LuisOscar:哎呀,我引用了錯誤的一個。這是我的不好。如果y向下(相當於左上角的原點),CGRectGetMinY'應該在右上方,'CGRectGetMax'在左下角 – tranvutuan

0

Y軸確實指向下方,從視圖的左上角開始。因此y的較小值更接近視圖的頂部。

+0

如果y軸向下,應該靠近視圖的頂部等於視圖的右上方? – tranvutuan

相關問題