关于UIView中的坐标转换

1.在UIView中的关于坐标转换的一般常用的方法有以下几个内容

1>相对于点

- (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view;

大体的含义:转换一个点从接收者坐标系到给定的视图坐标系 

就是以fromView自身的坐标系的一个点的位置,假如现在以toView自身的坐标系为参考,此时这个点的位置坐标是多少.

参数:

CGPoint 
一个在调用者坐标系中的点 
view 
一个包含了需要被转换的点的视图。如果视图是nil,那么这个方法将会转换成基于窗口的坐标。否则视图和接收者都要属于同一个UIWindow对象。 
返回值 
基于视图的坐标系转换过的点 

注意:

1、如fromView是nil,则返回CGrectZero。 

   这种情况发生在view的init方法中;

[self.superView convertPoint:aPoint toView:toView]; 

   此时的self.superView是nil。 

2、如果toView是nil则相当于:

[fromView convertPoint:aPoint toView:selfView.window]; 

所以如果要将坐标转为相对于窗口的坐标,则只要如下就可以了: 

[fromView convertPoint:aPoint toView:nil];

3、fromView和toView还没有放到一个view中去,也就是没有对它们执行addSubview方法,此时它们的superView是nil。这种情况一定要小心了, 
   尽量不要这么作,因为view还没有建立明确的相对坐标系,这时cocoa框架一定很抓狂,作了很多假设,一般是以创建fromView和toView的那个view作为superView来处理的,但是并不确定

- (CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view;

2>相对于矩形区域

- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;

大体的含义:转换接收者坐标系中的矩形到其他视图 

就是以fromView为坐标系的一个矩形位置,假如现在以toView自身的坐标系为参考,此时这个矩形的矩形位置是多少.

参数 
rect 
一个在视图坐标系中的矩形 
view 
一个视图内部有矩形在他的坐标系中。如果视图是nil,那么这个方法将会基于窗口来转换。否则视图和接收者必须都属于同一个UIWindow对象 
返回值 
The converted rectangle 
转换过的矩形 

- (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view;

3>判断包含重叠的代码如下:

CGRectContainsRect(<#CGRect rect1#>, <#CGRect rect2#>)

判断rect1和rect2是否有重叠

CGRectContainsPoint(<#CGRect rect#>, <#CGPoint point#>)

判断point是不是在rect上

CGRectIntersectsRect(<#CGRect rect1#>, <#CGRect rect2#>)
判断rect1是否包含了rect2





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值