最近发现在项目开发中经常会用到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;
下面我用实例来说明一下
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));
然后我们看一下在日志中打印的结果:
打印结果把这两个转换rect的方法弄明白了,上面那两个转换point的方法就自然明白了,相同的道理
网友评论