转自hcios 一、示例 如下图所示,橙色view是蓝色view的子控件,蓝色view是绿色view的子控件。由于橙色view的frame是参考蓝色view的,因此,如果需要获取橙色view相对于绿色view的位置,就必须进行坐标系的转换。 二、实现方法 UIView类中提供了如下四个方法,可以改变坐标系 - (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view;- (CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view;- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;- (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view; 为了实现示例中的要求,可以通过如下方式获取橙色view相对于绿色view的距离 CGRect newFrame = [self.view1 convertRect:self.view2.frame toView:self.view];NSLog(@"newFrame:x:%f, y:%f",newFrame.origin.x,newFrame.origin.y);