Чтобы преобразовать прямоугольник из системы координат, источник которой находится в левом нижнем углу (давайте просто назовем его традиционной системой координат, чтобы дать ему имя), в систему, где источник находится в верхнем левом углу (система координат iPhone), вам нужнознать размер представления, где CGRect
, так как представление является ссылкой для прямоугольника.
Например, предположим, у вас есть представление с размером 200 x 300, и у вас есть CGRect
CGRectMake(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](https://i.stack.imgur.com/LF9yd.jpg)