Согласно документации Apple,
CGRectMinY(CGRect) rect возвращает координату y верхнего правого угла указанного прямоугольника.
Разве это не должен быть нижний левый угол прямоугольника? Потому что я думаю, что ось Y направлена вниз.
Согласно документации Apple,
CGRectMinY(CGRect) rect возвращает координату y верхнего правого угла указанного прямоугольника.
Разве это не должен быть нижний левый угол прямоугольника? Потому что я думаю, что ось Y направлена вниз.
Если это для iOS, я думаю, что ваша функция неверна.
CGRectGetMinY
Возвращает координату y, которая устанавливает нижний край прямоугольника.
CGFloat CGRectGetMinY (прямая CGRect);
Параметры
прямой
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.
CGRectGetMinY
должен быть вверху справа, а CGRectGetMax
внизу слева.
- person tranvutuan; 04.06.2012
Ось Y направлена вниз, начиная с верхней левой точки вида. Таким образом, меньшие значения y находятся ближе к верхней части представления.