функция iOS говорит "CGRectMinY", которая должна быть в левом нижнем углу

согласно документации Apple,

cgrectminy(CGRect) rect возвращает координату y верхнего правого угла указанного прямоугольника

разве это не должен быть нижний левый угол прямоугольника? Потому что я думаю, что ось Y вниз.

2 ответов


если это для iOS, я думаю, что ваша функция неверна.

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

CGRectGetMinY

возвращает координату y, которая устанавливает нижний край a прямоугольник.

CGFloat CGRectGetMinY (CGRect rect );

параметры

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

ключ должен просто рассмотреть это, если вы попросите min, вы получите более низкое значение, чем если вы попросите max. Даже если вы думаете об этом без использования системы координат 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 ближе к верхней части представления.