将CGrect值更改为用户坐标系

我有一个CGRect ; 我可以将其坐标转移到用户坐标系中,即左下角到顶部而不是左上角到底部。 是否有任何预定义的方法或我需要手动计算? 提前致谢。

要从原点位于左下角的坐标系中转换一个矩形(让我们称之为传统的坐标系来命名它)到原点位于左上角的系统(iPhone坐标系),你需要知道CGRect所在视图的大小,因为视图是矩形的参考。

例如,假设您有一个大小为200 x 300的视图,而您拥有的CGRectMake(10, 20, 30, 40)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)

希望这个图像更清晰 希望这个图像更清晰