Appleのドキュメントによると、
CGRectMinY(CGRect)rectは、指定された長方形の右上隅のy座標を返します
長方形の左下隅にすべきではありませんか?Y軸が下向きだと思うので。
これがiOSの場合、機能が間違っていると思います。
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 で宣言
編集:混乱を解消する。「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
これを見た人にとっては、何も問題はありません。min は max より小さくなっています。
したがって、反転システムから視覚的に少ない値を取得したいので、混乱は ios 反転システムにあります。
これが奇妙に思える理由です。CGGeometry での記述は、「人間の世界」用に作成されています。iOS反転システム用ではありません。
Y 軸は、ビューの左上の点から開始して下向きになります。したがって、y の値が小さいほど、ビューの上部に近くなります。