UIView相对坐标转换

有时候要在view里,要求A相对于B的位置,可用UIVIew提供的以下函数:

convertRect:toView: 

- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view
转换调用者视图中的某个矩形,转换为相对于view的矩形坐标

convertRect:fromView: 

转换一个矩形从其他视图坐标系到调用者坐标系。

下面是两个点的转换,与上面的矩形转换一样。

convertPoint:toView: 
convertPoint:fromView: 
下面看个图更加明显,在控制器的view里面有两个控件,一个view A,一个view B,如图所示:

其中A的frame为,{{20,60},{46,20}},B 的frame为{{20,120},{160,284}}

为了方便,两个view的x坐标是一样的。然后求A相对于B的坐标位置,就可以调用他们父view的方法,求A相对于B的坐标位置

CGRect  viewAFramw = self.viewA.frame;

CGRect  viewA2ViewBFramw =  [self.view convertRect:viewAFrame toView:viewB ];

那viewA2ViewBFramw  的值就等于{{0,-60},{46,20}},由于是相对于B的坐标,一般情况B的的bounds原点是(0,0).所以做了转换之后,A的x坐标是0,而y的坐标就是他们在父view里y坐标值的相差的绝对值,那即是-60,所以viewA 相对于viewB是的矩形坐标为{{0,-60},{46,20}}.其他3个函数也是类似,有了这几个方法可以快速算出相对坐标,不用再自己转换了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值