要将矩形从原点位于左下角的坐标系(我们将其称为传统坐标系来命名)转换为原点位于左上角的系统(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