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坐标转换小结_第1张图片
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坐标转换小结_第2张图片
打印结果

把这两个转换rect的方法弄明白了,上面那两个转换point的方法就自然明白了,相同的道理

你可能感兴趣的:(UIView坐标转换小结)