UIView坐标转换小结

最近发现在项目开发中经常会用到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;

下面我用实例来说明一下
UIView坐标转换小结
文章图片
UI界面
CGRect greenRect = self.greenView.frame; CGRect redRect = self.redView.frame; CGRect blueRect = self.blueView.frame; NSLog(@"绿色view的frame====%@",NSStringFromCGRect(greenRect)); NSLog(@"红色view的frame====%@",NSStringFromCGRect(redRect)); NSLog(@"蓝色view的frame====%@",NSStringFromCGRect(blueRect)); //坐标转换后 //以下两句代码都是计算redView中的blueView在最外面的UIView中的frame CGRect blueRect1 = [self.redView convertRect:self.blueView.frame toView:self.view]; CGRect blueRect2 = [self.view convertRect:self.blueView.frame fromView:self.redView]; //fromView和toView正好对称 NSLog(@"蓝色view的frame1====%@",NSStringFromCGRect(blueRect1)); NSLog(@"蓝色view的frame2====%@",NSStringFromCGRect(blueRect2));

然后我们看一下在日志中打印的结果:
UIView坐标转换小结
文章图片
打印结果 【UIView坐标转换小结】把这两个转换rect的方法弄明白了,上面那两个转换point的方法就自然明白了,相同的道理

    推荐阅读