UIView中坐标转换中convertRect:toView与convertRect:fromView的关系

在storyboard中创建三个view,层级关系看下图
这里写图片描述
具体坐标如下图,一个小方格代表50
这里写图片描述

CGRect newRect = [self.view convertRect:self.blueView.frame fromView:self.redView];
相等于:
 CGRect newRect = [self.redView convertRect:self.blueView.frame toView:self.view];
打印结果都为:{{200, 250}, {50, 50}}
上面的两行代码都表示:算出在红色控件里的蓝色控件在控制器view中的位置(其实就是算x和y的值,因为宽高不变)
CGRect newRect = [self.view convertRect:self.blueView.bounds fromView:self.redView];
相等于:
CGRect newRect = [self.redView convertRect:self.blueView.bounds toView:self.view];
打印结果都为:{{100, 200}, {50, 50}}
上面的一个是self.blueView.frame,一个是self.blueView.bounds,
* 这样写也表明了frame和bounds的区别:frame表示的是在父控件中的位置和大小,bounds表示的是以自身为坐标原点的位置和大小。
CGRect newRect = [self.view.window convertRect:self.blueView.bounds fromView:self.redView];
相等于:
CGRect newRect = [self.redView convertRect:self.blueView.bounds toView:nil];
打印结果都为:{{100, 200}, {50, 50}}
注意:这里传nil和传self.view.window是一样的
CGRect newRect = [self.blueView convertRect:CGRectMake(10, 10, 20, 20) toView:self.greenView];
相等于:
 CGRect newRect = [self.greenView convertRect:CGRectMake(10, 10, 20, 20) fromView:self.blueView];

打印结果都为:{{210, 160}, {20, 20}}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值